这个需求其实还是因为垃圾评论日益猖獗,为了保证速度,内心拒绝多装一个验证插件,所以就撸码吧,加了一个简单的算术,基本上机器人评论就发不了评论了,效果见本站文章评论,使用的是wordpress 5.0
+版本,早期版本不知道代码是否一样,代码仅供参考。
查看自己的主题,大部分主题在 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
若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。
谢谢分享,感谢提点
你用上了,哈哈