之前我已经转过一篇文章关于屏蔽垃圾评论的(WORDPRESS全面禁止非中文的垃圾评论),但是通过函数过滤垃圾评论还是有不少漏网之鱼,垃圾评论的技术一直随着防垃圾进步,所以屏蔽也得与时俱进,刚开始用的时候大约两天会出现一条垃圾评论,到后来天天都好几十条,过滤了都这样,没过滤的话会很恐怖的。

如果博主懒的的话可以直接使用Aksimet了事,但是Aksimet的机制有点不好,会导致数据库冗余,因为每条评论都会有Akismet的标签,所以我一直都没用Aksimet。

下面整理了几个处理垃圾评论的办法。

一、通过代码过滤非中文语系的评论

1、参考《WORDPRESS全面禁止非中文的垃圾评论

2、由于现在的垃圾评论都是多国语言的,所以建议配合几种办法一起使用

二、评论的设定

1、如果可以的话,建议开启“用户必须注册并登录才可以发表评论 ”,但是这个设定对访客不太友好。

2、过滤关键词。
这个得根据你的实际情况进行增减,例如我的博客是ru域名,所以我吧俄罗斯字母都添加到评论黑名单里边了,黑名单里边还可以填入臭名昭着的ip地址。

添加设置评论审核过滤词:
QQ群
群号
脱发
洗发
书香阁
全讯
婚纱
测试一下
美瞳
皱纹
皮草
服饰
首饰
珠宝
写得不错
写真
辛苦了
点读
橘红
炎
手机
路过
建博客
优惠码
促销
淘
商城
建站
减肥
携带者
二手
支持了
支持一下
试一下
医院
彩票
小窍门
面膜
代写
减肥
项链
代购
隐形眼镜
人体
共产党
党员
法轮功

添加评论黑名单关键词:

coach
110.89.49.238
124.72.24.36
173.208.179.50
91.236.75.99
112.111.160.200
Singjet
充气娃娃
代孕
伴游
做爱
性爱
精油
彩票
诚招
助理
学车
白癜风
静脉曲张
人流
乙肝
病毒
妊
娠
症
针
市seo
州seo
seo.c
fuck
shit
チ
わ
か
シ
ヴ
ィ
ト
ン
ひ
も
ル
ヴ
ャ
ネ
ル
バ
ッ
グ
П
г
н
п
ы
м
и
д
м
б
ъ
я
й
価格
百家乐
办理
博彩
彩金

三、小墙

1、直接把一下代码放到主题的functions.php文件当中

/* -----------------------------------------------
<<小墙>> Anti-Spam v1.8 by Willin Kan.
*/
//建立
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=$2ww$3$4/textarea><textarea name=\"comment\" cols=\"64%\" rows=\"4\" style=\"display:none\"></textarea>",$input);') );
} }
//检查
function gate() {
( !emptyempty($_POST['ww']) && emptyempty($_POST['comment']) ) ?
$_POST['comment'] = $_POST['ww'] : $_POST['spam_confirmed'] = 1;
}
//处理
function sink( $comment ) {
if ( !emptyempty($_POST['spam_confirmed']) ) {
//方法一:直接挡掉, 将 die(); 前面两斜线删除即可.
//die();
//方法二:标记为spam, 留在资料库检查是否误判.
add_filter('pre_comment_approved', create_function('','return "spam";'));
$is_ping = in_array( $comment['comment_type'], array('pingback', 'trackback') );
$comment['comment_content'] = ( $is_ping ) ?
"◎ 这是 Pingback/Trackback, 小墙怀疑这可能是 Spam!\n" . $comment['comment_content'] :
"[ 小墙判断这是Spam! ]\n" . $comment['comment_content'];
}
return $comment;
} }
$anti_spam = new anti_spam();
// -- END ----------------------------------------

屏蔽垃圾评论的终极办法小结

希望这几屏蔽之后垃圾评论都进不来了,期望搞到莆田那些家伙都失业,嘻嘻。

via:http://waihuizhan.com/stop-wordpress-spam/