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

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

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

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

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

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

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

<p><?php spam_protection_math();?></p>

2条评论

  1. WordPress评论添加验证码(非插件)
    avatar
    Lv.1 1楼

    为什么没有出现数字验证码的窗口呢?

  2. WordPress评论添加验证码(非插件)
    avatar
    Lv.1 2楼

    正在使用,可不可以加上已经评论过的用户,不显示验证码呢

    发表评论

  1. 😉
  2. 😐
  3. 😡
  4. 😈
  5. 🙂
  6. 😯
  7. 🙁
  8. 🙄
  9. 😛
  10. 😳
  11. 😮
  12. emoji-mrgree
  13. 😆
  14. 💡
  15. 😀
  16. 👿
  17. 😥
  18. 😎
  19. ➡
  20. 😕
  21. ❓
  22. ❗
  23. 64 queries in 0.391 seconds