建博客最烦的就是每天进后台看到一大堆的垃圾评论(SPAM),WordPress有自带一个Akismet的插件,能过滤部份垃圾评论但效果不理想,那么多垃圾评论还需要手动删除。上网搜索,网上也有一些插件能够给评论加上验证码,但是插件用的多了对博客也不好,于是还是选择了用算术验证来解决这个问题,就是在用户添加评论的时候,多出一个输入框,让你输入系统随机产生的一个小算术题,输入正确了就可以正常添加评论,输入错误或者不填则提示错误,而不能进行添加评论。
具体方法如下:
修改 wp-comments-post.php :
查找:
if ( ” == $comment_content )
在其上面添加代码:
//Fufu_checkcode
if ( !$user->ID ) {
$aaa = trim($_POST[aaa]);
$bbb = trim($_POST[bbb]);
$subab = trim($_POST[subab]);
if((($aaa+$bbb)!=$subab)|| empty($subab)){
wp_die( __(‘Error: Please enter the correct results of the math problems.’) );
}
}
//Fufu_end
然后修改当前主题目录下的 comments.php (我用的 iNove) ,在适当的位置添加代码,我是在提交按钮之前添加的,即查找:
<input name=”submit” type=”submit” id=”submit”
在其前面添加代码:
<?php $aaa=rand(0,5); $bbb=rand(3,9); ?><?php echo $aaa; ?>+<?php echo $bbb; ?>=
<input type=”text” name=”subab” id=”subab” size=”2″ tabindex=”5″ style=”width:20px” /><?php if ($req) _e(‘(required)’, ‘inove’); ?>
<input name=”aaa” value=”<?php echo $aaa; ?>” type=”hidden” />
<input name=”bbb” value=”<?php echo $bbb; ?>” type=”hidden” />
如果你的主题不是 iNove 的话下面这段代码要做相应的修改,这段代码的意思是“(必填)”需要对应模板的语言。
<?php if ($req) _e(‘(required)’, ‘inove’); ?>
修改好后,用用看实际的效果如何吧。

2010-01-03 19:41:29 1#
照你的做了,可是我的怎么答案不对也会发表评论。。。。。。
2010-01-04 16:58:03
那你试试我这个,答案错误能发表评论吗?
2009-10-25 16:27:11 2#
@ooaixt
呵呵,不会改~
再说那么简单的算术题,也不麻烦吧~
2009-10-25 16:01:38 3#
改成通过一次验证之后就不要再算数了吧?每次都要算的话有点麻烦咧