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 邮箱,这更为处理垃圾评论带来了方便。
实际效果:
Leave a Reply