三种代码方式彻底屏蔽WordPress垃圾评论

» WordPress » 三种代码方式彻底屏蔽WordPress垃圾评论

多种方式联合组合,彻底屏蔽WordPress垃圾评论,让你的网站远离垃圾评论

三种代码方式彻底屏蔽WordPress垃圾评论-极客公园

前言

前段时间写过一篇关于屏蔽垃圾评论插件的文章

WordPress插件无忧墙:对垃圾评论说NO

在这篇文章里面介绍了一款简单的屏蔽垃圾评论的方法,但是一个是不能彻底屏蔽垃圾评论,另一方面,处女座肯定想去掉插件的。今天云落给朋友推荐一个屏蔽垃圾评论的组合策略方案。

一、屏蔽指定IP的访问与评论

我们在后台都会看到评论的IP地址的,有些的垃圾评论的IP地址可能都没怎么换,那么看到发垃圾评论的IP地址果断屏蔽之,直接拒绝他们访问网站。
如果你们是阿帕奇服务器的话,打开根目录的.htaccess文件,在最底部添加这段代码

Order Allow,Deny
Deny from 114.231.65.219
Deny from 218.28.140.186
Deny from 221.204.241.24
Deny from 114.231.67.56
Deny from 114.231.65.219
Deny from 220.200.48.183
Allow from all

其中的数字就是要屏蔽的IP地址,一行一个,添加IP地址之后访问就是一个403错误
三种代码方式彻底屏蔽WordPress垃圾评论-极客公园

二、屏蔽含有英/日文的评论

如果你确认你的网站没有外国友人访问的话,那么就添加上吧,我们知道我们的很多垃圾评论都是含有英文字母和日文的,所以屏蔽掉外文就好了,在主题函数文件function.php添加以下代码即可

//评论过滤
function refused_spam_comments( $comment_data ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern,$comment_data['comment_content'])) {
err('写点汉字吧,博主外语很捉急!You should type some Chinese word!');
}
if(preg_match($jpattern, $comment_data['comment_content'])){
err('日文滚粗!Japanese Get out!日本語出て行け! You should type some Chinese word!');
}
return( $comment_data );
}
add_filter('preprocess_comment','refused_spam_comments');

三、屏蔽含有关键词评论

其实以上两种已经基本可以解决绝大多数的垃圾评论了,再加上这个屏蔽关键词的方法就更完美了

//拒绝含有关键字的评论
function in_comment_post_like($string, $array) {
    foreach($array as $ref) { if(strstr($string, $ref)) { return true; } }
    return false;
}
function drop_bad_comments() {
    if (!empty($_POST['comment'])) {
        $post_comment_content = $_POST['comment'];
        $lower_case_comment = strtolower($_POST['comment']);
        $bad_comment_content = array(
            '水水更健康',
            '楼主再见',
            '路过',
            '这是一个关键词'
        );
        if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {
            $comment_box_text = wordwrap(trim($post_comment_content), 80, "n  ", true);
            $txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a');
            fwrite($txtdrop, "  --------------n  [COMMENT] = " . $post_comment_content . "n  --------------n");
            fwrite($txtdrop, "  [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "n");
            fwrite($txtdrop, "  [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "n");
            fwrite($txtdrop, "  [REFERER  ] = " . $_SERVER['HTTP_REFERER'] . "n");
            fwrite($txtdrop, "  [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "n");
            fwrite($txtdrop, '--------------**********------------------'."n");
            header("HTTP/1.1 406 Not Acceptable");
            header("Status: 406 Not Acceptable");
            header("Connection: Close");
            err( __('卧槽,你好像在发广告吧 ̄□ ̄||') );//自定义错误信息
        }
    }
}
add_action('init', 'drop_bad_comments');

在代码里面添加关键词即可拒绝垃圾评论了,然后happy

注意事项

[v_organge]第二,第三种方法默认的评论是采用ajax的方式评论的,通俗的说就是,无刷新出现评论结果,如果你的评论不是ajax的,需要将代码里面的err替换为wp_die,否则会出错滴,谢谢WordPress吧友的提醒[/v_organge]

后语

其实除了上面的三种方法之外,WordPress自带的屏蔽垃圾评论的功能也可以用用,虽然比较弱,文中的第二个代码从本网站主题里面扣出来,其他代码整理自互联网

-- 完 --

发表评论

电子邮件地址不会被公开。 必填项已用*标注

8 Replies to “三种代码方式彻底屏蔽WordPress垃圾评论”

  1. 博主 . .第三个方法中 wp_die() 输出错误信息, 按照第二种方法看, 应该是err()
    文章后面应当说明一下. ajax 评论用 err() ,否则用wp_die()
    ps:wp吧友.