wordpress评论添加算术验证码

(一)在主题目录的functions.php添加如下代码:

function spam_provent_math(){
  $a=rand(5,15);
  $b=rand(5,15);
  echo "<input type='text' name='sum' id='sum'  size='22' tabindex='3' value='动手又动脑,哦也 !' onfocus='if (this.value != \"\") {this.value = \"\";}' onblur='if (this.value == \"\") {this.value = \"动手又动脑,哦也 !\";}' /> = $a + $b (<font color='#0088DD'>防止机器人评论</font>)" ."<input type='hidden' name='a' value='$a'/>" ."<input type='hidden' name='b' value='$b'/>";
}
function spam_provent_pre($spam_result){
  $sum=$_POST['sum'];
  switch($sum){
    case $_POST['a']+$_POST['b']:break;
    case null:wp_die('亲,算个结果撒');break;
    default:wp_die('算错啦⊙﹏⊙b汗');
  }
  return $spam_result;
}
//注册用户or管理员则不需要验证
if(!is_user_logged_in() && $comment_data['comment_type']==''){
  add_filter('preprocess_comment','spam_provent_pre');
}

(二)在主题目录下的comments.php(不同的主题可能评论框的位置不同,有的主题可能在functions.php里面)中调用上述代码:

/根据是否是管理员来决定是否显示验证码

补充几句:
如果验证码错误的时候页面变形,则把

  1. case null:wp_die('亲,算个结果撒');break;
  2. default:wp_die('算错啦⊙﹏⊙b汗');

改成

  1. case null:err(__('亲,算个结果撒'));
  2. default:err(__('算错啦⊙﹏⊙b汗'));

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 😯
  • 😛
  • 😳
  • 😮
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • 😕