WordPress创建的网站基本都面临垃圾评论的问题,即便安装了所谓最好的Akismet 反垃圾评论插件,仍然会收到大量群发的英文垃圾评论。今天看到了一个博主的代码解决方法,思路非常巧妙,那就是判断评论中是否包含中文(汉字),因为绝大部分的垃圾评论都是英文群发的。我们禁止不包含中文的评论,那么几乎就屏蔽了99.99%的垃圾评论。下面就将代码分享给大家。

将下面的代码加入到主题的functions.php文件中即可。

/* 评论验证 */
function refused_spam_comments($comment_data) {

    //登录用户不验证
    if (is_user_logged_in()) {
        return $comment_data;
    }
    //验证是否包含中文
    $pattern = '/[一-龥]/u';
    if (!preg_match($pattern, $comment_data['comment_content'])) {
        err('码农资源网(www.codesou.cn)友情提示:评论必须含中文!');
    }
    if (wp_blacklist_check($comment_data['comment_author'], $comment_data['comment_author_email'], $comment_data['comment_author_url'], $comment_data['comment_content'], $comment_data['comment_author_IP'], $comment_data['comment_agent'])) {
        // header("Content-type: text/html; charset=utf-8"); 
        err('码农资源网(www.codesou.cn)友情提示:你填写的某项信息或IP地址已被列入黑名单,无法进行评论,请文明评论!');
    } else {
        return $comment_data;
    }
}
add_filter('preprocess_comment', 'refused_spam_comments');