WordPress自动禁止包含特定关键词的垃圾评论

方法简介:将以下代码添加到WordPress博客主题的functions.php文件中,根据自己的需要修改 $ bad_comment_content 数组的内容,任何包含在$ bad_comment_content 数组内的字符都将会被自动拒绝留言!

代码如下:

 代码如下 复制代码

//拒绝包含特定关键词的垃圾评论
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(
            '不要乱发',
            'baidu.com',
            'www.111cn.net',
            'www.111cn.net',
            'is'
        );
        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");
            wp_die( __('bang bang.') );
        }
    }
}
add_action('init', 'drop_bad_comments');

现在全英文的垃圾评论也不洗,我们可以限制一下。

刚一发我就扒过来了~~~~来自v7v3修改自知更鸟,一般的spammer都是外国人,第一次发布绝对是全英文。所以第一次可以挡住80%的垃圾评论!根据email来判断是否为同一人,如果是,并且第一次没有使用全英文评论,即可正常发言不受限制。再加上常见的敏感关键词,多数的英文、日文评论都不在话下。

  放至主题文件中functions.php:

 

 代码如下 复制代码
function v7v3_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', 'v7v3_en');
function v7v3_comment_post( $incoming_comment ) {
$http = '/[<|KTV|ッ|の|ン|??|?I|グ|?|]/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', 'v7v3_comment_post');

最后还可以使用wordpress评论黑名单功能

1、登陆Wordpress后台→设置→讨论→评论黑名单

(内容可自行修改为合适自己博客的)到评论黑名单,点击保存即可

 代码如下 复制代码

www.111cn.netwww.111cn.net原理:垃圾站收集垃圾评论常见词库,出现此类词汇的垃圾评论一律被Wordpress后台直接消灭!

 

2、修改Wordpress主题functions.php文件[修改前注意备份文件]

注:本站使用comments-ajax.php处理提交,用err输出错误信息,如果贵站没有使用comments-ajax.php,那么请用wp_die输出错误信息!

方法:将下面代码中的err换成wp_die!否则会出现500错误!

 代码如下 复制代码

//评论外链数检测
function BYMT_spamlinks($comment) {
$spamlinks = preg_match_all( '/<a [^>]*href/i', $comment['comment_content'], $out );
if ($spamlinks>1){ //1为允许的链接数量
err(__('抱歉,检测到评论外链过多,请重写'));
} else {
return $comment;
}
}
add_filter('preprocess_comment', 'BYMT_spamlinks');

时间: 2024-10-25 16:21:32

WordPress自动禁止包含特定关键词的垃圾评论的相关文章

Wordpress自动将包含长链接的评论标记为垃圾评论

方法一 此方法依旧是来自 Willin Kan 大师(可惜他已经退出WordPress圈),折腾很简单,直接将下面的代码放到主题的functions.php文件的最后一个 ?>前面即可:  代码如下 复制代码 // 垃圾评论拦截 class anti_spam {  function anti_spam() {      if ( !current_user_can('level_0') ) {        add_action('template_redirect', array($this

wordpress广告垃圾评论过滤(验证码、关键词)

方法一,给评论增加算术验证码 在主题目录的functions.php添加如下代码:  代码如下 复制代码     //算术验证码by vfhky     function spam_provent_math(){     $a=rand(5,15);     $b=rand(5,15);     echo "<input type='text' name='sum' id='sum' size='22' tabindex='3' value='动手又动脑,哦也 !' onfocus='if

禁止WordPress自动替换半角标点符号

下面是代码解决方法: 1. 编辑 wp-includes/formatting.php 文件,找到以下代码(源代码的 57-60 行.行数找不到,可以直接复制一段进行搜索):  代码如下 复制代码 // static strings $curl = str_replace($static_characters, $static_replacements, $curl); // regular expressions $curl = preg_replace($dynamic_characters

禁止WordPress自动更新邮件通知的详解

默认情况下WordPress小版本安全更新后,会发送一封邮件通知您的站点已更新.如果你有多个WordPress站点,每个站都发一次就有些让人厌烦了,可以通过本文的方法禁止WordPress自动更新邮件通知功能. 将下面的代码添加到当前主题的functions.php中: add_filter( 'auto_core_update_send_email', 'wpb_stop_auto_update_emails', 10, 4 ); function wpb_stop_update_emails

WordPress博客防止垃圾评论骚扰的例子

禁止黑名单中的评论提交到数据库 将下面的代码放到你主题的functions.php中: //禁止垃圾评论提交到数据库 function uedsc_fuckspam($comment) { if(is_user_logged_in()){ return $comment;} //登录用户不检测评论 if(wp_blacklist_check($comment['comment_author'],$comment['comment_author_email'],$comment['comment_

三招教你快速屏蔽WordPress垃圾评论

一般都是说加一些屏蔽过滤的函数之类的.其实都差不多.不过有些特别长的就显得有点累赘了.当然比起官方的垃圾过滤插件肯定功能没那么强大,但是最起码会让你的身材很好看.不会在你的数据库弄那么多东西进去.今天分享几个实用小代码吧,而且效果还不错.大家也可以试试,不错可以收藏一下. 第一招:禁止非法词汇评论提交到数据库,把下边的代码放到当前主题的 functions.php 里,然后在后台"讨论"中设置你的黑名单即可. //禁止垃圾评论提交到数据库 function Banfuckspam($c

推荐几种防御wordpress垃圾评论的方法

上周博客突然不能访问了,问了下服务器商说是我流量太太,影响到了服务器的正常运行.我草,不至于啊.下载带本地一看,两千多垃圾评论.我才明白应该是垃圾评论导致的服务器的负载过高.然后我没办法只好暂时关闭了评论.然后网站各种搜索解决办法,总结起来:垃圾评论不可能测底清除的,做的再好还是会有的,只能自己手动清理了.但是不至于导致服务器负载过高挂掉. 我用了两个方法,这里给分享下,因为迟早你会用到的,哈哈!! 1.屏蔽所有全是英文(不包含汉字)的评论. 只需修改你当前使用的主题目录下的functions.

WordPress屏蔽垃圾评论

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近一段时间被垃圾评论搞的头疼,要是隔几天没有登录后台的话,就会有上百条甚至几百条垃圾评论等待着你删除,因为评论里有一部分是真实的,所以在删除垃圾评论的过程中需要仔细一些,防止将读者的真实评论误删掉,有几次光清理垃圾评论就花了半小时左右的时间,让人叫苦连天啊. 前段时间我写了一篇<如何屏蔽wordpress的垃圾英文评论>的文章,

WordPress将垃圾评论阻挡在门外

今天,翼帆远航将介绍两种把垃圾评论阻挡在门外的方法. 一般情况下,我们会使用著名的反垃圾评论插件:Akismet 来阻止垃圾评论的入侵,Akismet 会将所有识别出的垃圾评论分离出来,并提供一键清理垃圾评论的功能,虽然 Akismet 几乎能够 100% 识别出垃圾评论,但由于每天的垃圾评论实在太多,天天点"一键清理"也不是办法,有没有更加实用的解决方案,能将垃圾评论在提交之前先拦截下来呢?   我们先来分析垃圾评论的类型: 纯英文或含有日文.韩文等他国语言的垃圾评论 固定某个网站用