WordPress防止垃圾评论方法(代码)

陈江林SEO博客《重庆SEO》分享:在WordPress使用代码防止垃圾评论,减少垃圾评论对网站攻击,从而提高网站的运行!

对于大多数站长而言,垃圾评论是一个非常头疼,而且非常顽固的“毒瘤”,正常的评论有利于网站优化,反之就能影响网站优化。对于垃圾有很多种方法,有使用插件来防止垃圾评论,有的使用代码来实现禁止垃圾评论,不管用哪一种方法,最终的目的都一样,减少网站的垃圾评论。

陈江林SEO喜欢使用代码来实现该功能,过多的插件会影响网站的运行,所以使用代码来防止垃圾评论更有利于网站优化。使用代码的方法也是我要讲的主题,下面有几段代码来实现“减少”垃圾评论,百分百的禁止太难,除非关闭评论功能,不过对于我们大多数站长而言,还是需要有交流的地方。

言归正传,下面为大家呈上“防止垃圾评论”的源代码,只需要把代码添加到主题的模板函数(function.php)中即可:

1、willin kan的反垃圾评论代码在网上用的人比较多,实际测试效果也比较好,特别适用于那些讨厌Wordpress插件、喜欢自己折腾WP程序的博主们使用。代码如下:

// 垃圾评论拦截
class anti_spam {
    function anti_spam() {
        if ( !current_user_can('level_0') ) {
            add_action('template_redirect', array($this, 'w_tb'), 1);
            add_action('init', array($this, 'gate'), 1);
            add_action('preprocess_comment', array($this, 'sink'), 1);
        }
    }
    function w_tb() {
        if ( is_singular() ) {
            ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#",
                "textarea$1name=$2w$3$4/textarea><textarea name=\"comment\" cols=\"100%\" rows=\"4\" style=\"display:none\"></textarea>",$input);') );
        }
    }
    function gate() {
        if ( !empty($_POST['w']) && empty($_POST['comment']) ) {
            $_POST['comment'] = $_POST['w'];
        } else {
            $request = $_SERVER['REQUEST_URI'];
            $referer = isset($_SERVER['HTTP_REFERER'])         ? $_SERVER['HTTP_REFERER']         : '隐瞒';
            $IP      = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] . ' (透过D理)' : $_SERVER["REMOTE_ADDR"];
            $way     = isset($_POST['w'])                      ? '手动操作'                       : '未经评论表格';
            $spamcom = isset($_POST['comment'])                ? $_POST['comment']                : null;
            $_POST['spam_confirmed'] = "请求: ". $request. "\n来路: ". $referer. "\nIP: ". $IP. "\n方式: ". $way. "\n內容: ". $spamcom. "\n -- 记录成功 --";
        }
    }
    function sink( $comment ) {
        if ( !empty($_POST['spam_confirmed']) ) {
            if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment;
            //方法一: 直接挡掉, 將 die(); 前面两斜线刪除即可.
            die();
            //方法二: 标记为 spam, 留在资料库检查是否误判.
            //add_filter('pre_comment_approved', create_function('', 'return "spam";'));
            //$comment['comment_content'] = "[ 判断这是 Spam! ]\n". $_POST['spam_confirmed'];
        }
        return $comment;
    }
}
$anti_spam = new anti_spam();

 

注意:代码最后提供了两种对付垃圾评论的办法,一种是直接阻止评论,另一种是将垃圾评论放在Wordpress评论的待审核队列中,默认的是第一种,如果你想使用第二种,请给die();加上//,然后去掉“方法二”下面代码的//符号。

PS:直接使用纯代码就可以达到Wordpress反垃圾评论的效果,效率自然要好于使用一些Wordpress插件,这也是为什么不少人喜欢用代码来代替插件要实现的功能。
willin kan的反垃圾评论代码也有可能造成一些误判,为了最大限度地留住所有人的评论,我们可以将评论放在待审核队列中,方便我们自己人工来判定。

2、根据观察,Wordpress的垃圾评论中有95%是全英文评论和含有日文字符的评论,如果能够禁止这些评论的提交,也就基本上达到了Wordpress防止垃圾评论的目的了。阻止全英文的评论代码如下:

// 禁止全英文评论
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'); 

3、含有日文字符评论代码如下:

// 禁止日文评论
function BYMT_comment_jp_post( $incoming_comment ) {
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(preg_match($jpattern, $incoming_comment['comment_content'])){
wp_die( "禁止有日文字符的评论 You should type some Chinese word" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_jp_post');

PS:阻止全英文评论和含有日文字符的评论效果是不错的,从部落的使用体验来看,基本上阻止了绝大多数的Wordpress垃圾评论,当然也一两个“漏网之鱼”。缺点也很明显,它会阻止一些正常的评论,例如有些技术性的文章会用到编程代码,不会中文的“国际友人”等等,在评论时都会遇到无法评论的情况。

文章摘要于《免费资源部落》,希望以上内容能帮到大家,以上代码重庆陈江林都测试过可以放心使用,在添加代码前最好将网站备份,以防万一!

防止垃圾评论源代码下载:http://www.chenjianglin.cn/csseo/34.html

来源:陈江林SEO博客

重庆SEO | 长寿SEO | 遵义SEO | 仁怀SEO

微云SEO

微云SEO

微信公众号:vy-seo 欢迎您的加入!
wordpress

30分钟建站技术

全面系统的WP技术培训,从零基础到模板制作达人!
重庆陈江林

SEO技术培训

月入4000元,当前网络最真实的赚钱方法!
作者:
该日志由 Jianglin 于2014年07月21日发表在网站优化分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原文固定链接: http://www.chenjianglin.cn/876.html/
标签:
【上一篇】
【下一篇】

您可能感兴趣的文章:

1 个回复

  1. 重庆陈江林说道:

    使用效果相当不错,最近几天都没垃圾评论了

发表评论


正在加载中……