为wordpress 5.1 评论加上简单算术题防机器人垃圾评论

这个需求其实还是因为垃圾评论日益猖獗,为了保证速度,内心拒绝多装一个验证插件,所以就撸码吧,加了一个简单的算术,基本上机器人评论就发不了评论了,效果见本站文章评论,使用的是wordpress 5.0 +版本,早期版本不知道代码是否一样,代码仅供参考。

wordpress评论加算术

查看自己的主题,大部分主题在 comments.php 使用了默认的评论表单函数 comment_form() 来生成表单,我们需要在这里面添加一行用来让用户输入计算结果用于验证。

添加下面代码到 function.php 中:

//评论添加验证码
function my_fields($fields) {
    $num1=rand(0,9);
    $num2=rand(0,9);
    $myfuelds['sum'] = '<p class="comment-form-sum">
        <label for="sum"><i>' . $num1 . ' + ' . $num2 . ' = ?</i></label>
        <input id="sum" name="sum" type="text" value="" size="30" required="required" />
        <input type="hidden" name="num1" value="' . $num1 . '">
        <input type="hidden" name="num2" value="' . $num2 . '">
        </p>';
    array_splice($fields, 3, 0, $myfuelds);
    return $fields;
}
add_filter('comment_form_default_fields','my_fields');

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

这里面可能需要根据主题调整一些 html 代码的 class 并修改样式以保证新增输入框样式和其他的输入框保持一致,另外在这一句代码中:

array_splice($fields, 3, 0, $myfuelds);

决定了新添加的输入框位于所有输入框中的索引(index)位置,调整数字 3 可以将它调整到想要的位置。

标题:为wordpress 5.1 评论加上简单算术题防机器人垃圾评论

原文链接:https://beltxman.com/2450.html

若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。

为wordpress 5.1 评论加上简单算术题防机器人垃圾评论”上有 2 条评论;

评论已关闭。

Scroll to top