WordPress拒绝黑名单中信息的评论发表

2018年4月9日14:08:25 4分钟 发表评论 175 views
  • 方法一

将以下代码加入到functions.php

  1. function mac_fuckspam($comment) {
  2.     if(  is_user_logged_in()){ return $comment;} //登录用户无压力...
  3.     if( wp_blacklist_check($comment['comment_author'],$comment['comment_author_email'],$comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'] )){
  4.         header("Content-type: text/html; charset=utf-8");
  5.         exit('你填写的某项信息或IP地址已被列入黑名单,无法进行评论,请文明评论!');
  6.     }  else  {
  7.         return $comment;
  8.     }
  9. }
  10. add_filter('preprocess_comment', 'mac_fuckspam');
  • 方法二

将以下代码加入到comments-ajax.php中(比如检查评论太快那段函数后面)

  1. if( wp_blacklist_check($comment_author,$comment_author_email,$comment_author_url$comment_content )&&!is_user_logged_in()){//登录用户还是无压力...
  2.         err(__('你填写的某项信息或IP地址已被列入黑名单,无法进行评论,请文明评论!'));
  3.     }

 

  • 两种方法原理和优缺点对比:
  • 方法一:click submit→POST出去→收到拒绝信息 exit→return→ 会清空评论框内容并重置提交时间间隔 == submit了一次
    优点: 杀毒彻底
  • 方法二:click submit→POST被拒绝→return→ 会保留评论框内容 == 没有submit过
    优点:

    1. 评论者省时省力, 因为此类误判几率大, 省得好人们重新再评论一次了;
    2. 由于没有POST出去, 所以相对而言对数据库压力最小;

    缺点: 由于comments-ajax是从表单内直接提取$_POST的的字段,所以无法匹配IP和agent类黑名单

  • 效果展示

云柯博客这里用的是第一种,过滤效果蛮好,如出现符合黑名单中条件的评论,不给予发表且提示相关信息

WordPress拒绝黑名单中信息的评论发表

云柯

发表评论

gravatar

:?: :?: :?: :?: :?: :?: :?: :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: