wordpress防垃圾评论代码 — WordPress非插件纯代码实现wordpress评论验证码

[ wordpress教程   // 2015-04-12  ]
186

最近一段时间来,奇芳阁的wordpress博客中的垃圾评论就像洪水泛滥,一发不可收拾。WordPress垃圾评论数量多容易掩盖正常的读者评论,批量删除垃圾评论又容易造成误删,WordPress垃圾评论发布机器持续不断地向网站提交评论请求,频率足够高的话则变演变成一种网站攻击,配置差一些的网站主机很有可能因此而运行缓慢,严重者造成服务器宕机,无法正常访问。

WordPress的垃圾评论的危害是不言而喻的,对付Wordpress垃圾评论不仅要“阻断”垃圾评论的发布,更要提前“阻止”垃圾评论的提交。虽说网上有很多wordpress验证码插件,可奇芳阁部落又不愿意安装插件本文将分享使用代码实现为wordpress评论添加一个简单的加法运算验证码,杜绝那些使用软件群发的垃圾评论。

wordpress防垃圾评论之不用插件添加验证码:

第一步:添加计算函数

首先,我们要在当前主题的 functions.php文件中添加以代码:

//评论添加验证码
function spam_protection_math(){
$num1=rand(0,9);
$num2=rand(0,9);
echo "<input type='text' name='sum' class='math_textfield' value='' size='25' tabindex='4'><br/>"
."<input type='hidden' name='num1' value='$num1'>"
."<input type='hidden' name='num2' value='$num2'>"
."$num1 + $num2 = ?";}
function spam_protection_pre($commentdata){
$sum=$_POST['sum'];
switch($sum){
case $_POST['num1']+$_POST['num2']:break;
case null:wp_die('对不起: 请输入验证码.');break;
default:wp_die('对不起: 验证码错误,请重试.');
}
return $commentdata;
}
if($comment_data['comment_type']==''){
add_filter('preprocess_comment','spam_protection_pre');
}

第二步:修改原评论框内容

添加完计算函数之后,然后我们修改当前主题comments.php这个文件,找到在发表评论显示验证码的地方,添加以下代码:

<?php spam_protection_math();?>

第三步:禁止垃圾评论提交到数据

完成以上操作后,WordPress评论添加验证码功能也已经完成,不过后来还是收到了几个垃圾评论,当然,数量已经非常少,这时候我们可以使用WordPress代码禁止垃圾评论提交到数据!将以下代码放入 functions.php文件中:

//禁止垃圾评论提交到数据库
function uedsc_fuckspam($comment) {
if(is_user_logged_in()){ return $comment;} //登录用户不检测评论
if(wp_blacklist_check($comment['comment_author'],$comment['comment_author_email'],$comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'] )){
header("Content-type: text/html; charset=utf-8");
wp_die('您评论包含辱骂,过激或者违反法律等言论,或者您的IP已被加入黑名单,如有疑问请联系管理员处理!<a href="javascript:history.go(-1);">返回文章页</a>');
}  else  {
return $comment;
}
}
add_filter('preprocess_comment', 'uedsc_fuckspam');

当然了,奇芳阁还建议你审核第一次提交的评论人的评论,设置审核后才显示,如果遇到垃圾评论,将其email、IP、网址等添加到黑名单即可