A-A+

WordPress无插件防范垃圾评论的方法

2014年06月14日 编程技术 暂无评论

虽然使用了 Akismet 博客垃圾评论的插件,拦截了成千上万的垃圾评论, Akismet 仅仅是进行了垃圾评论的拦截,所有的数据还是进了数据库了,其实 Akismet 这样做的目录是要让用户自己来重新审核一下看看有没有误进垃圾评论的留言。

最近在使用 wordpress 系统时,因为垃圾评论的问题甚是苦恼,因为有一些根本不是垃圾评论的留言也进了垃圾评论库,这倒没什么,关键是每天都有成千上万真正的垃圾进入到数据库里面,每天看着那么多的英文垃圾评论,甚至有的时候还有日文,韩文,乱七八糟的语言,还要在这里面去查看有没有误删的评论,着实头痛,这些发垃圾评论的人也不说有没有评论上,所有的都进了数据库,只能一次次的清空垃圾评论,直接导致数据库里的ID上万了。

首先想到的办法就是使用无插件来解决,让垃圾评论在进入数据库之前直接给屏蔽掉,不让其进入到数据库,但这里涉及到一个问题就是哪些是垃圾评论,如果进行了区分,用代码再来实现就很容易了。

这些天仔细观察了一下,基本上垃圾评论就是全英文的评论,或者全日文,韩文等,还有一些,中文式的“这个帖子绝对是今年以来我看过的最精彩的了”之类的灌水贴,这样的贴子会被 Akismet 直接送进垃圾评论,其实每天没几个,可以忽略不计,那么我们现在要做的就是要评论掉全英文,日文,韩文。。。等的评论了。

这里的更改就是要让评论中包括中文,否则就评论失败,修改的方法:直接更改主题目录下的 functions.php 文件,在将第一个 <?php 替换成:

<?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');

如果评论中没有包含汉字,那么就不会评论成功,也实现了全英文垃圾评论的拦截了,这些垃圾评论也不会进入到数据库中了,当然 Akismet 基本上就成了摆设,据说还有其它的垃圾评论插件可以实现垃圾评论的拦截,暂时先不去研究了,如果你有兴趣的话,可以去研究一下。

标签:

给我留言