这几天,博客评论出现了一些小问题。先是Derek Yang反馈我的博客无法评论,后来随望淡思也说需要重复提交评论才能正常显示。我也挺纳闷的,这么几天只有流量却不见评论呢。简单测试了一下,果然是评论出现了问题:即使是我自己的账号登陆,提交的评论也无法正常显示。一查,直接是进入垃圾评论中去了。想必之前诸位网友的评论也直接被归入到垃圾评论中去了。屏蔽垃圾评论采用的是Akismet,估计是和加速乐或某种插件有些冲突的缘故。
加速乐是需要保留用的,Akismet只好停用了。但是如何屏蔽每天几百个的垃圾评论呢?之前采用的是水果验证,效果很好,但是用户体验不好,遂放弃。看到网上有说直接修改wp-comments-post.php文件名,但是2012主题comments.php文件中竟然没有wp-comments-post.php,只好作罢。使用插件的话,很多种方法,但是尽量还是不用插件的好。
于是便找到了这样一段代码(最后蓝字部分)来解决问题。经过多日的测试与反馈,这个代码相当给力,是我用过的最佳屏蔽垃圾方式,强烈推荐!!!使用时,不需要做任何修改,只需要把这段代码放到主题目录下functions.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=$2wall$3$4/textarea><textarea name="comment" cols="50" rows="4" style="display:none"></textarea>",$input);') ); } } function gate() { ( !empty($_POST['wall']) && empty($_POST['comment']) ) ? $_POST['comment'] = $_POST['wall'] : $_POST['spam_confirmed'] = 1; } function sink( $comment ) { if ( !empty($_POST['spam_confirmed']) ) { die(); } } return $comment; } } new anti_spam();
好折腾呀!!就为了所谓的加速乐!当然对我感觉来说差不多!!
加速乐前一段不稳定,最近还是很快的,毫秒级别的响应速度。
看来这个屏蔽垃圾评论的代码还挺好的,到现在还没有一个垃圾评论,正常的评论也能发布。
折腾折腾就好了。
现在好像这个屏蔽垃圾评论的代码挺不错的,还没有收到垃圾评论过。
不到不得已,不搞这些东西了。我就想不通了,那些乱码样的评论发出来有什么意思!哎!
猜测,垃圾评论主要就是利用seo推广网站,然后从中赚取流量牟利。
This is a test comment to show how effective your anti-spam method works. Of course, it is left by tumutanzi rather than a robot.
正常显示啊……有的代码可以将全英文的屏蔽掉,我没有使用。
对比测试过那么多,感觉这个是最靠谱的,没有之一。
再拿这个当小白鼠小心给你拉黑啊,呵呵。