wordpress屏蔽/防垃圾评论(代码版)

          阅读(23)

    wordpress屏蔽/防垃圾评论(代码版)

    兆兆博客最近google收录上去了,喜大普奔!然而,随之而来的还有各种垃圾评论,铺天盖地,全英文的哦。so……是时候整一整了。加段代码就搞定,so easy。

    使用说明:在主题目录下的“function.php”最后插入以下php代码即可

    代码一:(智能判断并拦截工具代理评论)

    // 垃圾评论拦截
    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(); //不用的话请在前面加注释
    //方法二: 标记为 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();

    代码二:(屏蔽全英文评论)

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

    我个人人为加这两段代码就足够了,能拦下大多数垃圾评论。。看官若是嫌麻烦的话,网上还有许多傻瓜化插件。当然,我觉得最有效的方法是在评论框处加一个“机器人”判断,也就是验证码、滑块之类的,有时间做下吧。

    P.S.“特色图片”与“多说”无关,我就是随手放一个做做样子,多说已经死了。唉……

    2017-04-15 23:14:51


    喜欢 0



还没有人抢沙发呢~

加载中……