WordPress屏蔽垃圾评论

浏览:
字体:
发布时间:2013-12-20 16:18:39
来源:

  最近一段时间被垃圾评论搞的头疼,要是隔几天没有登录后台的话,就会有上百条甚至几百条垃圾评论等待着你删除,因为评论里有一部分是真实的,所以在删除垃圾评论的过程中需要仔细一些,防止将读者的真实评论误删掉,有几次光清理垃圾评论就花了半小时左右的时间,让人叫苦连天啊。

  前段时间我写了一篇《如何屏蔽wordpress的垃圾英文评论》的文章,这个方法主要针对全英文的垃圾评论,如果垃圾评论里没有中文就会自动屏蔽,刚开始效果的确不错,几乎大部分的垃圾评论都屏蔽掉了(那段时间主要是英文垃圾评论),可后来好像专门跟我作对一样,英文里开始带中文了,而且频率越来越高,实在没办法,所以决心一定要找一个有效的方法把这些烦人的评论拦截掉。下面是垃圾评论的一些截图:

  

/

  

/

  在WordPress大学里,我找到了作者一直在用一个方法,据说可以屏蔽掉98%以上的垃圾评论,用了几天,效果确实不错,偶尔有几个漏网之鱼,手动删一下也不费事。方法:将下面这串代码粘贴到functions.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>",$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"] . ' (透过代理)' : $_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本身自带的一些功能,比如设置指定关键词拦截,在设置-讨论下,将一些广告中使用频率较高的词汇写在里面,比如:广告、淘宝、垃圾、裸体、减肥、美容等,这些双管齐下,效果自然更佳。

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();