前几天发了一篇 WordPress 屏蔽日文垃圾评论的教程:《 WordPress 小技巧:屏蔽日文垃圾评论》,不过今天在群里聊天时又有朋友说屏蔽了日文垃圾评论又来了英文评论,而且英文评论不好一竿子打死,因为有些童鞋就喜欢拽两句英文。其实我们可以限制下访客初次来访不允许发表纯英文评论,这样相对一竿子打死所有英文评论就要好的多了就要好上很多。

function wxd_en($comment) {
    $pattern = '/[一-龥]/u';
    $cau=$comment['comment_author'] ;
    $cem=$comment['comment_author_email'] ;
    global $wpdb;
    $ok_to_comment = $wpdb->get_var("SELECT comment_approved FROM $wpdb->comments WHERE comment_author = '$cau' AND comment_author_email = '$cem' and comment_approved = '1' LIMIT 1");
    if( is_user_logged_in() || 1 == $ok_to_comment ){ return $comment; }
    elseif ( !preg_match_all($pattern, $ccontent, $match) ) {
        exit('
<head><meta http-equiv="Content-Type" content="text/html; charset=utf8"/></head>
吖~干么第一次来就跟人家拽英文啊,讨厌!(初次评论不允许纯英文哦~么么)<a href="javascript:history.go(-1);"> 向上一页</a>');
    }
}
add_filter('preprocess_comment', 'wxd_en');

以上代码就是以评论输入的邮箱作为判断,如果此邮箱未在网站有被审核通过的评论则不允许发表纯英文评论,然后在后台开启下初次评论需要审核即可人性化的屏蔽英文广告了,既不影响正常交流的纯英文评论也不必受到垃圾英文评论的侵扰了。

function wxd_comment_post( $incoming_comment ) {
$http = '/[<|KTV|ッ|の|ン|優|業|グ|貿|]/u';
if(preg_match($http, $incoming_comment['comment_content'])) {
wp_die( "
<head><meta http-equiv='Content-Type' content='text/html; charset=utf8'/></head>
您的评论包含敏感关键词,被系统判断为垃圾评论!<a href='javascript:history.go(-1);'> 向上一页</a>" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'wxd_comment_post');

然后将以上代码都加到当前主题的 functions.php 文件即可屏蔽所有的日语和英语的垃圾评论了。