最近JV每天都能看到垃圾评论,纯英文还附带网址,现在每天几条虽然不多,但以后很难说。
每次都要到后台删也是很麻烦的,又不喜欢装插件,索性就加个验证吧。
首先是全英文的评论一概不允许通过,
添加方法——打开主题的模板文件 functions.php 在最后一个 ?>之前添加以下代码:
//屏蔽纯英文评论和纯日文 function inlojv_comment_post( $incoming_comment ) { $pattern = '/[一-龥]/u'; // 禁止全英文评论 if(!preg_match($pattern, $incoming_comment['comment_content'])) { wp_die( "您的评论中必须包含汉字!" ); } $pattern = '/[あ-んア-ン]/u'; // 禁止日文评论 if(preg_match($pattern, $incoming_comment['comment_content'])) { wp_die( "评论禁止包含日文!" ); } return( $incoming_comment ); } add_filter('preprocess_comment', 'inlojv_comment_post');
添加完毕之后保存即可!$pattern的值是正则表达式,前者是汉字编码范围,后者是日文编码范围,也就是评论必须包含中文,并且不能包含日文,否则拒绝提交。
——————————————————————————————————————————————————
其次就是算术验证码了,虽说添加验证码会导致用户体验不太好,但是没办法,
为了不让体验太差,不用四位数验证而使用的是算术验证。
添加方法——也一样打开主题的模板文件 functions.php 在最后一个 ?>之前添加以下代码:
//评论算术验证码/////////////////////////////// function jv_comment_protection(){ //随机获取范围0~9的两个自然数 $num1=rand(0,9); $num2=rand(0,9); echo"<div class='row'>" ."<label for='math' class='small'>验证码:</label>" ."$num1 + $num2 = <input type='text' name='sum' class='math_textfield' value=" tabindex='1' size='5'>" ."<input type='hidden' name='num1' value='$num1'>" ."<input type='hidden' name='num2' value='$num2'>" ."<label for='math' class='small'>请输入两数之和(必填)</label>" ."</div>"; } function jv_comment_protection_pre($commentdata){ $sum=$_POST['sum'];//用户提交的计算结果 switch($sum){ //得到正确的计算结果则直接跳出 case $_POST['num1']+$_POST['num2']:break; //未填写结果时提示错误 case null:err('出错了!请填写计算结果.');break; //计算错误时的错误讯息 default:err('出错了!你算错了哦,再试一遍吧?!'); } return $commentdata; } if(!is_user_logged_in() && $comment_data['comment_type']==''){ add_filter('preprocess_comment','jv_comment_protection_pre'); }
把代码放在类似“发表评论”的div之前,具体看你主题评论位置的布局,
一般情况下都能找到类似 <input name="submit" type="submit" id="submit"/> 的提交文本框,
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载但请务必注明出处,尊重他人劳动成果。
转载请注明出处链接 : https://www.inlojv.com/1204.html