目前在wordpress中过滤垃圾评论一般使用的是插件Akismet,但是最近随着网站流量的上升总是有一大堆英文或者日文垃圾未审核的评论,个人认为是有程序刷的,是一大堆没用的垃圾评论(虽然我看不明白这些英文或者日文是啥意思),而且数量越来越多,删除都非常麻烦,那怎么办???后来,我发现这些评论都是不带中文的,大家可以看下我的垃圾评论列表:
这些评论我相信觉对不是人干的,所以我的策略就是过滤不带中文的评论内容,方法如下:
1、在你主题的functions.php文件中加入如下代码:
function check_comment_data( $commnet_data ) { $pattern = "/[\x7f-\xff]/"; // 禁止全英文评论 if(!preg_match($pattern, $commnet_data['comment_content'])) { $str = "You should type some Chinese word (like \"你好\") in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!"; //异步提交评论表单 die ( __( $str ) ); //wordpress默认错误提示页面 //wp_die( $str ); } return $commnet_data; } add_filter('preprocess_comment', 'check_comment_data');
说明:代码使用了钩子preprocess_comment,因为本站使用的评论是异步提交所以直接数据代码:
die ( __( $str ) );
如果你是直接表单提交可以使用注释中的代码:
wp_die( $str );
当然你也可以加入一些其他判断,比如不可以带连接,不能少于5个汉字等……