WordPress评论添加验证码(非插件)

WordPress评论添加验证码(非插件)

WordPress评论添加验证码(非插件,数字验证码):

前言:垃圾信息爆发的年代,SPAM 犹如洪水猛兽肆意泛滥,由此也导致验证码无处不在的现状。对于 WordPress 而言,可以使用官方提供的 Akismet 插件来有效防范垃圾评论的发布。但是过多的插件往往会拖慢我们的Wordpress加载速度,因此我选择了手工数字验证码!

研究:简单的是直接修改 WordPress 根目录下的 wp-comments-post.php,但是每次升级Wordpress,都必须修改文件,很麻烦。经过长时间研究,终于晓得这个模版怎么添加验证码了!于是结合本主题模版选择了在functions.php主题文件中增加算术验证码!

1.在主题模版中找到functions.php文件,增加算术验证码函数:

[cpp]

function spam_protection_math(){
//获取两个随机数, 范围0~9
$num1=rand(0,9);
$num2=rand(0,9);
//最终网页中的具体内容
echo “<input type=’text’ name=’sum’ class=’math_textfield’ value=” size=’25’ tabindex=’4′> $num1 + $num2 = ?”
.”<input type=’hidden’ name=’num1′ value=’$num1′>”
.”<input type=’hidden’ name=’num2′ value=’$num2′>”
.”<label for=’math’ class=’small’> 验证码</label>”;

}
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’);
}

[/cpp]

2.在主题模版中找到Comment.php,在合适位置增加代码:

[cpp]<p><?php spam_protection_math();?></p>[/cpp]

 

3 Replies to “WordPress评论添加验证码(非插件)”

  1. 不错,再加上cookie判断就很好了