WordPress 现在的使用是越来越广泛,WordPress 这个玩意儿是从国外传过来的,WordPress 也是国外 SEO 们使用最多的程序。同时与之而来的是相关 SEO 工具的开发也越来越多,技术也越来越高。

记得曾经使用过的一个英文版的评论工具可以快速找到 N 多的 WordPress 博客,同时还可以区分哪些是需要验证码、哪些是不需要验证码、哪些是评 论需要审核、哪些是不需要审核、哪些是评论有跳转、哪些是没有做跳转... 等一系列的选项,工具做得很精细,同时还有代理登陆等模拟人工访问等功能,虽然 这些做得很好,但是制造的产物对于俺们这些博主而言特别是中文博主而言,简直就是万恶之源。

喜欢倒腾博客的童鞋们都知道,虽然评论能给博客带来活力,同时也是一个交流的平台,但是垃圾评论泛滥也不是件好事情,不仅浪费空间资源,同时会降低 网页的内容质量对用户体验产生不良影响;而对于很多人一提到处理垃圾评论都会想到使用类似 Akismet 这样的垃圾评论过滤插件,我的破折君博客刚开始也 是按照这个思路来做的,主要用到了下面三个常用的方法:

1 、 WordPress 自带的 Akismet,默认禁用。启用后要到其网站上注册一下,拿到一个 api key 才能用。该 api key 对于个人用户是免费的。

2 、 Spam Free WordPress 。文章里推荐的是另一个,不过看到这个评分比较高,所以装这个了。

3 、 Math Comment Spam Protection 。加了个验证码,让做一道数学题。

但是这三个插件虽然能阻挡一些垃圾评论,但是很多时候都是放在垃圾评论里面,但是也还是要手工删除。刚开始觉得没什么,但是随着破折君博客的流量的 增加,垃圾评论越来越多,不止中文的还有很多的纯英文垃圾评论,有时候一天甚至达到四五百条,删都删的累了,所以就想通过禁止纯英文评论来解决这个问题。

评论工具不同于手工填表单的方式进行评论而往往是利用 ajax 入口或者 wp-comments-post.php 或者其它入口进行发送。但是不管他从哪里入口,wp 钩子的作用应该一直存在,所以我在主题模板的 functions.php 下面再加入以下代码,对纯英文评论进行过滤,就可以解决:

function scp_comment_post( $incoming_comment ) {

$pattern = '/[一-龥]/u';

// 禁止全英文评论

if(!preg_match($pattern, $incoming_comment['comment_content'])) {

wp_die( "You should type some Chinese word (like "你好") in your comment to pass the spam-check, thanks for your patience! 您的评论中必须包含汉字!" );}

return( $incoming_comment );}

add_filter('preprocess_comment', 'scp_comment_post');

通过这个方法可以让纯英文内容不能评论,这比把纯英文评论标记为垃圾评论更好一些,省去了再去删垃圾评论的时间。