使用的Wordpress自带的akismet插件后,还常常会受到Wordpress垃圾评论的骚扰,这些垃圾评论多数有一个共同的特点:带链接、英文。怎样才能有效的屏蔽这些垃圾评论呢?
作为一个中文站点,很少有老外访问,就算有老外访问,也很少有老外用纯英文评论,所以将下面的代码加到主题的functions模板文件中,可以有效屏蔽无中文的垃圾评论:
function lianyue_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
// 禁止全英文评论
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
wp_die( "您的评论中必须包含汉字!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'lianyue_comment_post');
有些评论还会带很多的链接地址,可以通过将以下代码加到主题的functions模板文件中,禁止包含特殊内容( href=" 、rel="nofollow"、http://)的评论:
function lianyue_comment_post( $incoming_comment ) {
$http = '/[href="|rel="nofollow"|http:\/\/|<\/a>]/u';
if(preg_match($http, $incoming_comment['comment_content'])) {
wp_die( "万恶的发贴机!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'lianyue_comment_post');
当然也可以将两者合在一起,这样既能屏蔽无中文的评论,又能屏蔽包含特殊内容的评论:
function lianyue_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
$http = '/[href="|rel="nofollow"|http:\/\/|<\/a>]/u';
// 禁止全英文评论
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
wp_die( "您的评论中必须包含汉字!" );
}elseif(preg_match($http, $incoming_comment['comment_content'])) {
wp_die( "万恶的发贴机!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'lianyue_comment_post');
如果你所用的主题使用了ajax评论,错误提示页面可能会出现布局混乱,可以通过以下方法进行解决:
打开comments-ajax.php找到最后个err( __(
并在下一行增加:
$pattern = '/[一-龥]/u';
if (!preg_match($pattern,$comment_content) )
err( __('您的评论中必须包含汉字!') );
或者
$http = '/[href="|rel="nofollow"|http:\/\/|<\/a>]/u';
if (preg_match($http,$comment_content) )
err( __('万恶的发贴机!') );
我使用以上方法后,站点收到的垃圾评论越来越少,效果非常明显。