几行代码,轻松解决 WordPress 大量垃圾评论!

iEdon Inside 一直饱受大量垃圾评论的困扰,无奈使用国内主机,Akismet 严重拖累评论系统速度,于是 Akismet 被 iEdon 舍弃。

然而,iEdon 不希望使用多说,怎么办呢,捣鼓了一夜,研究出一种通过取特征字的办法来屏蔽垃圾评论器发布的垃圾评论。

使用这种方法有二种特别的好处:一就是评论直接被阻止,根本不会进垃圾评论列表,解放了你的双手,不用再手动清理垃圾评论。第二个就是,有些博客采用了 Gravatar 缓存,而这些垃圾评论的邮箱会使你的头像缓存服务器上多很多重复的默认头像,通过此种办法,从根源杜绝了垃圾评论。

无插件无Akismet纯代码屏蔽垃圾评论:

原理:大多数主题都是基于 comment-ajax.php 提交的 Ajax 评论,因此可以对 comment-ajax.php 开刀。其次,难免会有这一关过滤不了的,这个时候通过 functions.php 里面的代码来达到优势互补的效果。

1.打开 functions.php,加入如下代码:

//基础过滤垃圾评论 By iEdon (iedon.com)
add_filter('preprocess_comment', 'filte_comment_post');
function filte_comment_post($incoming_comment) {
    $pattern = '/[一-龥]/u';
    if(!preg_match($pattern, $incoming_comment['comment_content']))
	{
        err( "是国人请说汉语!" );
    }
	$foreach = array("女装","蘑菇街","返佣","网赚","gmail","[email protected]","sitemap");
	foreach ($foreach as $temp)
	{
		if(stripos($incoming_comment['comment_content'],$temp))
		{
			unset($temp);
			err('已拦截垃圾评论敏感词!');	
		}
	}
    return($incoming_comment);
}

首先,这些代码直接秒杀一切日文韩文阿拉伯文英文的各种垃圾评论,然后针对国内垃圾评论的常用词汇进行了屏蔽,如果你有大量垃圾评论词汇总结出来的话,可以自行在后面添加。

但是,iEdon 观察到国内的评论非常狡猾,内容都是稳稳妥妥的文字。不过,国内的垃圾评论将各种URL放在了昵称、E-Mail、个人主页方面,这时候就要开刀 comment-ajax.php。

2.打开 comment-ajax.php。

找到类似这样的几行:

$comment_type = '';
if ( get_option('require_name_email') && !$user->ID ) {
	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
		err( '请填写昵称和邮箱!' ); // 將 wp_die 改為錯誤提示
	elseif ( !is_email($comment_author_email))
		err( '请填写有效的邮箱!' ); // 將 wp_die 改為錯誤提示

在下面加入如下代码:

	elseif(stripos($comment_author_email,"gmail"))
		err('禁止Gmail邮箱评论!'); //反垃圾评论 By iEdon (iedon.com)
	elseif(stripos($comment_author,"http"))
		err('垃圾评论请滚扽!'); //反垃圾评论
	elseif(stripos($comment_author,".com"))
		err('垃圾评论请滚扽!'); //反垃圾评论
	elseif(stripos($comment_author,".cn"))
		err('垃圾评论请滚扽!'); //反垃圾评论
	elseif(stripos($comment_author,".net"))
		err('垃圾评论请滚扽!'); //反垃圾评论

这样,所有带有网址的垃圾评论都会被拒之门外。而且 iEdon 观察到,不论是国内还是国外的垃圾评论,其使用的邮箱都是虚假的 Gmail 邮箱,这更为处理垃圾评论带来了方便。

实际效果:

iEdon Inside 反垃圾评论实际效果 iEdon Inside 反垃圾评论实际效果 2
最后 iEdon 想说的是:无毒环保纯绿色,还不快拿去 :~P


72 responses to “几行代码,轻松解决 WordPress 大量垃圾评论!”

  1. 前來支持一下~~我不管了~反正用了AK了~ ❗
    禁止谷歌郵箱邮箱评论!?!……………..
    已拦截垃圾评论敏感词!?!?!?!?!

    1. 垃圾评论都是谷歌邮箱,鉴于国!情,没有多大影响。

  2. 我的評論呢 😯

    1. 现在通过人工审核啦????

  3. 我的評論!! 😡

    1. 这不出现了么????

  4. 已拿走,期待新一版主题集成这个功能

    1. 谢谢,已经集成????

  5. 不错,简单高效……值得收藏!

    1. 方便就拿去试试吧

  6. 期待新版本集成此功能

    1. 集成了喔,因为是自己写的代码嘛

  7. 关键词会越来越多的

    1. 这是必然事件。。。

      1. 必然堵不过来

  8. 我还没遇到什么垃圾评论,看到一些博友受此困扰,看到应该挺有用的。

    1. 没有遇到!太神奇了!

  9. 主题中是自带有关键词屏蔽的功能哦。

  10. 完了,相中这个主题了,走不动腿了,下载啦,换主题!

    1. 喜欢就不客气????

  11. 但是,有些人评论需要用谷歌mail呀,直接屏蔽并不省事,反而……

    1. 这个道理我懂,不过我是因为使用谷歌mail的国人几乎很少,所以屏蔽了。

  12. 页面居然可以秒开神奇 🙁

    1. 哈哈,优化得不错
      其次是全静态
      再然后就是CDN啦

      1. 超级缓存插件~对访问者评论支持得不够好。每条评论都要重新填写信息哈~

        1. 嗯,这的确不方便。我有一种通过JS将Cookie中的评论者信息自动填写到评论框中的想法,不过现在还没能付诸实践。

  13. 很受伤的是那些真正用Gm*ail的朋友们。

    1. 是的呢,那也就对不住他们啦,可以更换一个邮箱评论。 URL已和谐

  14. wordpress 只要有点流量,就有大量的垃圾评论。

  15. 特征词如果要覆盖的话估计量挺大的

  16. 居然禁用g m a i l。。。

  17. 最近让垃圾评论弄的想吐,特别是nolink的那个,试了很多方法不知道这代码管用不管用。wp后台评论里添加了关键词,直接进垃圾评论,但是还是 会看到很不爽,这代码能直接屏蔽吗?

    1. 可以屏蔽哦~

  18. 我试试functions.php这个法子,看管用不

    1. 相信我 一定管用

  19. right, it is good,这很有用

Leave a Reply to 锋子 Cancel reply

Your email address will not be published. Required fields are marked *