阻止WordPress垃圾评论和广告评论的三种方法

之前写过一篇防御攻击和暴力扫描的文章,技巧九中有提到禁止垃圾评论的方法,这个方法可以禁止掉所有的机器人,但没法禁止人工发表的垃圾评论。

垃圾评论对网站没什么好处,搜索引擎非常注重评论,它回评判你的文章是否受读者欢迎,真实有效的互动评论多了,对文章的权重和收录都有好处。

很多人感觉评论可以做站外锚链接,其实这种链接的作用微乎其微了,百度对其看的很清淡了,还有论坛签名锚链接,都几乎没人做了,但是人工的广告评论还是蛮多的。

这些垃圾评论会占用博客数据库,备份出来的数据库要大很多,严重影响访问者的体验。垃圾评论对博客站没有任何好处,所以必须想办法禁止它,下边整理了一些有效方法供博主选择。

一、评论功能设置
如果你的某页面权重排名很高,就有可能会有软件来自动留言,还有一些非软件的访问用户来评论打广告。进入博客后台→设置→讨论,设置评论功能。

1、禁止评论

对于一些特殊的文章,可以禁止评论,保留大多数文章评论功能即可,因为评论可以增加收录内容和权重。进入文章列表,点击快速编辑,勾掉允许评论,这样任何人都无法评论此文章了。

wordpress禁止评论

2、评论设置

也可以设置评论的门槛,勾选评论者必须填写姓名和电子邮件,对于“用户必须注册并登录才可以发表评论”这个太功能太强大,完全可以闭屏掉所有的软件评论,但这样对于访问用户不太友好,注册评论毕竟太过繁琐,影响用户体验,所以这个功能不建议开启。

wordpress评论设置

过滤关键词

对于人工广告和恶意评论需要设置关键词,这些人工发的垃圾评论处理起来比较麻烦,可以在审核和黑名单中设置关键词过滤。

添加设置评论审核过滤词:

Q
q





法轮功

添加评论黑名单关键词:

seo
法轮功
性爱
做爱
激情
直播

二、安装插件设置
Akismet:wordpress自带的插件Akismet,Akismet是一款智能的评论过滤插件,90%以上的垃圾评论都会被它阻止在外。一些评论被你标注为垃圾评论后,Akismet会记忆并在下次直接判断为垃圾评论。就算你是人工评论,依然会进入垃圾评论中或审核评论中。

安装wordpress后,Akismet是自带的,开启此插件后进入官网http://akismet.com/wordpress/,在插件栏Akismet配置里输入密钥更新设置。

密钥可以通用,不喜欢申请的话,可以采用思德心语网使用的密钥:9e30fb0d3206

了解了Akismet的功能,那么自己在评论文章的时候要特别注意,一定要按照文章的中心思想去合理的评论。博客评论虽然可以提高外链和流量,但有的时候短时间内评论多过,重复提交相同的内容,Akismet就会判断为垃圾评论。

Fancy Captcha,验证码软件,对于评论非常不友好,浪费评论者时间,现在几乎没人用验证码

myQaptcha,对民网使用的这个插件,把插件功能集成到了主题当中,只需要滑动解锁。

wordpress评论滑轮解锁

三、代码两个小墙
使用Cookies for Comments插件,可以只能判断是否为自动评论,或者使用下边代码,基本可以100%屏蔽掉机器人发出的 spam,人工自然提交的评论表中增加一个hidden 变量,如果后台检测不到这个变量,则认定为 spam,可以选择需要审核,也可以直接过滤掉。直接把以下代码粘贴到 function.php中。

// 垃圾评论拦截
class anti_spam {
function anti_spam() {
if ( !current_user_can(‘level_0’) ) {
add_action(‘template_redirect’, array($this, ‘w_tb’), 1);
add_action(‘init’, array($this, ‘gate’), 1);
add_action(‘preprocess_comment’, array($this, ‘sink’), 1);
}
}
function w_tb() {
if ( is_singular() ) {
ob_start(create_function(‘$input’,’return preg_replace(“#textarea(.*?)name=([\”\’])comment([\”\’])(.+)/textarea>#”,
“textarea$1name=$2w$3$4/textarea>”,$input);’) );
}
}
function gate() {
if ( !empty($_POST[‘w’]) && empty($_POST[‘comment’]) ) {
$_POST[‘comment’] = $_POST[‘w’];
} else {
$request = $_SERVER[‘REQUEST_URI’];
$referer = isset($_SERVER[‘HTTP_REFERER’]) ? $_SERVER[‘HTTP_REFERER’] : ‘隐瞒’;
$IP = isset($_SERVER[“HTTP_X_FORWARDED_FOR”]) ? $_SERVER[“HTTP_X_FORWARDED_FOR”] . ‘ (透过D理)’ : $_SERVER[“REMOTE_ADDR”];
$way = isset($_POST[‘w’]) ? ‘手动操作’ : ‘未经评论表格’;
$spamcom = isset($_POST[‘comment’]) ? $_POST[‘comment’] : null;
$_POST[‘spam_confirmed’] = “请求: “. $request. “\n来路: “. $referer. “\nIP: “. $IP. “\n方式: “. $way. “\n內容: “. $spamcom. “\n — 记录成功 –“;
}
}
function sink( $comment ) {
if ( !empty($_POST[‘spam_confirmed’]) ) {
if ( in_array( $comment[‘comment_type’], array(‘pingback’, ‘trackback’) ) ) return $comment;
//方法一: 直接挡掉, 將 die(); 前面两斜线刪除即可.
die();
//方法二: 标记为 spam, 留在资料库检查是否误判.
//add_filter(‘pre_comment_approved’, create_function(”, ‘return “spam”;’));
//$comment[‘comment_content’] = “[ 判断这是 Spam! ]\n”. $_POST[‘spam_confirmed’];
}
return $comment;
}
}
$anti_spam = new anti_spam();

下边代码可以禁止英文和日文的评论。

// 禁止英文评论
function scp_comment_post( $incoming_comment ) {
$pattern = ‘/[一-龥]/u’;
if(!preg_match($pattern, $incoming_comment[‘comment_content’])) {
wp_die( “You should type some Chinese word (like \”你好\”) in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!” );
}
return( $incoming_comment );
}
add_filter(‘preprocess_comment’, ‘scp_comment_post’);
// 禁止日文评论
function BYMT_comment_jp_post( $incoming_comment ) {
$jpattern =’/[ぁ-ん]+|[ァ-ヴ]+/u’;
if(preg_match($jpattern, $incoming_comment[‘comment_content’])){
wp_die( “禁止有日文字符的评论 You should type some Chinese word” );
}
return( $incoming_comment );
}
add_filter(‘preprocess_comment’, ‘BYMT_comment_jp_post’);

PS:这几种阻止垃圾评论的方法非常实用,智能化阻止掉垃圾评论也不是万能的,因为有一些人为的垃圾评论还是防不住的,所有的方法只能降低垃圾评论的数量而已。

思德心语使用了前三种方法,基本防住了99.99%的垃圾评论,只有一些人工广告无法阻止!

原创文章,作者:Tony,如若转载,请注明出处:https://www.xxside.com/86.html

发表评论

登录后才能评论