WordPress反垃圾评论插件

话说,WordPress本身的机制对于垃圾评论的遏制能力也是非常好的。之前一直使用的是Bo-blog,没有验证码之前,每天都能收获上百条垃圾评论,应该为机器人所发。后来采用了那个比较变态的中文验证码,情况得以好转,配合一大串的禁用词列表,基本上发布垃圾评论只能依靠手工进行。每天有那么5~6条左右,发现新的IP地址发布垃圾,就把它加入到黑名单里面。

WordPress自身的机制把相当大量的垃圾评论阻挡在外。但是总有那么几个人每天都会发内容相同,或者无意义的评论。由于开启了新评论通知功能,我的邮箱也总是爆满,这让人很苦恼。于是就决定写一个插件来解决这个问题。

插件的机制很简单,基于IP地址屏蔽的策略。即如果一个IP地址发表过的评论有3条以上被列为垃圾评论,则该IP地址永久禁言;如果某IP地址发表的评论有被屏蔽的历史,那么判断上次屏蔽的留言是否在24小时之内,如果是,则禁言。

由于代码简单,我就不打包发布了,在这里贴出来主要代码,供大家参考~

if(!function_exists(‘antispam_check’)):
function antispam_check($comment) {
global $wpdb;
$query = $wpdb->prepare(‘SELECT COUNT(*) AS SPAM_COUNT, MAX(comment_date_gmt) AS LAST_SPAM_DATE FROM ‘.$wpdb->comments.’ WHERE comment_approved = \’spam\’ AND comment_author_IP = %s’, preg_replace( ‘/[^0-9a-fA-F:., ]/’, ”,$_SERVER[‘REMOTE_ADDR’] ));
$comment_count = $wpdb->get_row($query, ARRAY_A);
if($comment_count[‘SPAM_COUNT’] >= 3) {
wp_die(‘你屡次作恶,管理员已经忍无可忍永久封掉了你的IP地址,如果你对此有任何疑问请联系管理员。’);
}elseif($comment_count[‘SPAM_COUNT’] > 0 && gmmktime() – strtotime($comment_count[‘LAST_SPAM_DATE’], gmmktime()) < 24 * 3600) {
wp_die(‘你有过作恶的不良记录,24小时的不能发言,如果你对此有任何疑问请联系管理员。’);
}
return $comment;
}
endif;
add_action(‘preprocess_comment’, ‘antispam_check’);

WordPress反垃圾评论插件》有13个想法

    1. starlight36 文章作者

      :mrgreen: 其实可以做更强悍的过滤机制嘛,只要那个垃圾留言别太烦人就行了

评论已关闭。