为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>重试。','评论失败');
    }
    returncommentdata;
}
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