• 推荐!搬瓦工官方代理,自动更换被封IPJust My Socks

ad

WordPress评论非插件添加验证

这几天垃圾评论突然多了起来,虽然都被WordPress拦截到了未审核里,但是看到每天几十条全是链接的垃圾评论还是闹心。所以想加个评论验证码,过滤下垃圾评论。用的方法是添加了一个简单的数学算式,算对了才能发送评论,老规矩,非插件版~

 

先给你们感受下这两天小站收到的垃圾评论,全都是国外的,各种链接评论,简直丧心病狂:

rubbish-response

 

添加方法很简单:

1.在评论页面(一般是comments.php)添加对应的数字验证UI代码:

	$num1=rand(0,9);
	$num2=rand(0,9);
	echo "<label for=\"math\">请输入 <i>$num1 + $num2 = ?</i> 的计算结果:</label>\n";
	echo "<input type=\"text\" name=\"sum\" class=\"text\" value=\"\" size=\"25\" tabindex=\"4\">\n";
	echo "<input type=\"hidden\" name=\"num1\" value=\"$num1\">\n";
	echo "<input type=\"hidden\" name=\"num2\" value=\"$num2\">";

这个根据你的主题,将这段代码放在对应位置。

 

2.在functions.php中添加WordPress提交评论时验证是否提交了算术值是否正确:

function spam_protection_pre($commentdata){
   $sum=$_POST['sum'];
   if ($sum == null) {
        wp_die('对不起: 请输入验证码。<a href="javascript:history.back(-1)">返回上一页</a>', '评论失败');
    } else {
        switch ($sum) {
            case $_POST['num1'] + $_POST['num2']:
                break;
            default:
                wp_die('对不起: 验证码错误,请<a href="javascript:history.back(-1)">返回</a>重试。', '评论失败');
        }
    }
   return $commentdata;
}

3.添加使用条件:

if(!is_user_logged_in() && $comment_data['comment_type']==''){
	add_filter('preprocess_comment','spam_protection_pre');
}

 

至此,你就成功添加了在WordPress评论时增加验证码的功能~效果如下方我的评论一样,提交评论时需要加入一个算术值~

点赞
  1. Winson说道:

    好用,學到知識!順便測試下 :eek:

  2. 温存说道:

    博主晚上好,打扰了,我按照你的代码来,但是无论输入还是不输入验证码都可以添加评论是什么情况啊
    我在$fields = array()里面加了数值的相应字段,但好像没走spam_protection_pre 这个方法,PHP小白,求教,谢谢

    1. flyzy小站说道:

      已经更新了,之前缺了一个添加action

    1. flyzy小站说道:

      :evil: 是为了测试效果吗

  3. 46185770说道:

    :biggrin: 支持

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注