纯代码实现多种方式完美过滤WordPress中的垃圾评论

使用WordPress建站的朋友应该都会遇到一个问题,那就是大量的垃圾评论。不管你是新站还是老站都一样,今天为大家推荐几种对付这些垃圾评论的方法。当然了,若是你已经使用了评论插件之类的东西,那么就不必要看此文了,因为本文是针对WordPress默认评论,只适合那些想通过纯代码的方式解决WordPress垃圾评论的站长朋友。

方案一:禁止评论中出现超链接

直接将下面代码放入你WordPress主题的模版函数functions.php文件中保存即可。

function lianyue_comment_post( $incoming_comment ) {
$http = '/[<|=|.|友|夜|KTV|ッ|の|ン|優|業|グ|貿|]/u';
 if(preg_match($http, $incoming_comment['comment_content'])) {
wp_die( "发贴机 哥 屋 恩!" );
 }
 return( $incoming_comment );
 }
add_filter('preprocess_comment', 'lianyue_comment_post');

方案二:通过评论中必须包含中文的方式禁止全英文评论

在使用WordPress的过程中,若是你开启了网站的注册功能,那么你就会发现你网站要不了多久就会多出一堆全英文的用户名,这些都是一些国外的广告机器人注册用来发广告的,因此我们很有必要禁止掉这些全英文的评论,反正在我们国内,要是评论中全是英文反而显得很是违和。将下面代码放入你WordPress主题的模版函数functions.php文件中保存即可。

function junzibuqi_com_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
 // 禁止全英文评论
 if(!preg_match($pattern, $incoming_comment['comment_content'])) {
wp_die( "您的评论中必须包含汉字,否则将被视为发贴机!" );
 }
 return( $incoming_comment );
 }
add_filter('preprocess_comment', 'junzibuqi_com_comment_post');

方案三:评论中必须包含中文且不得出现如超链接之类的指定字符

其实上面提供的方案一和方案二已经足够杜绝垃圾评论的出现,若是你想要同时使用两种方式又觉得贴两份代码麻烦的话,那么请直接复制下面的二合一代码。使用了下面的代码后就不要再使用方案一和方案二了。至于代码的使用方式和上面一样,应该不用再多说了吧?

//评论中必须包含中文且不得出现如超链接之类的指定字符
 function junzibuqi_com_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
$http = '/[<|=|.|友|夜|KTV|ッ|の|ン|優|業|グ|貿|]/u';
 // 禁止全英文评论
 if(!preg_match($pattern, $incoming_comment['comment_content'])) {
wp_die( "写点汉字吧,博主外语很捉急!You should type some Chinese word!" );
 }elseif(preg_match($http, $incoming_comment['comment_content'])) {
wp_die( "不好意思,您的评论违反本站评论规则!" );
 }
 return( $incoming_comment );
 }
add_filter('preprocess_comment', 'junzibuqi_com_comment_post');

方案四:屏蔽评论中的指定关键词,如:Email、Url、Ip等

该代码使用方式和上面提供的一样,而且还可以与上面的代码同时使用。

//屏蔽评论中的指定关键词,如:email、url、ip等
function junzibuqi_com_fuckyou($comment) {
 if (wp_blacklist_check($comment['comment_author'], $comment['comment_author_email'], $comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'])) {
header("Content-type: text/html; charset=utf-8");
err(__('不好意思,您的评论违反本站评论规则'));
 } else {
 return $comment;
 }
}
add_filter('preprocess_comment', 'junzibuqi_com_fuckyou');

方案五:过滤英语和日文评论

该代码使用方式和上面提供的一样,而且还可以与上面的代码同时使用。

function junzibuqi_com_fuckyou_spam_comments($comment_data) {
$pattern = '/[一-龥]/u';
$jpattern = '/[ぁ-ん]+|[ァ-ヴ]+/u';
 if (!preg_match($pattern, $comment_data['comment_content'])) {
err(__('写点汉字吧,博主外语很捉急!You should type some Chinese word!'));
 }
 if (preg_match($jpattern, $comment_data['comment_content'])) {
err(__('小鬼子给老子滚粗!Japanese Get out!日本语出て行け! You should type some Chinese word!'));
 }
 return ($comment_data);
}
add_filter('preprocess_comment', 'junzibuqi_com_fuckyou_spam_comments');

方案六:屏蔽长连接评论

该代码使用方式和上面供的一样,而且还可以与上面的代码同时使用。

function junzibuqi_com_fuckyou_spamcheck($approved, $commentdata) {
 return (strlen($commentdata['comment_author_url']) > 50) ?
 'spam' : $approved;
}
add_filter('pre_comment_approved', 'junzibuqi_com_fuckyou_spamcheck', 99, 2);

方案六:屏蔽昵称,评论内容带链接的评论

该代码使用方式和上面提供的一样,而且还可以与上面的代码同时使用。

function junzibuqi_com_fuckyou_link($comment_data) {
$links = '/http:\/\/|https:\/\/|www\./u';
 if (preg_match($links, $comment_data['comment_author']) || preg_match($links, $comment_data['comment_content'])) {
err(__('在昵称和评论里面是不准发链接滴.'));
 }
 return ($comment_data);
}
add_filter('preprocess_comment', 'junzibuqi_com_fuckyou_link');

来自http://junzibuqi.com/chundaimadujuelajipinglun.html