为个人博客,每天几十或上百条垃圾评论,删除这些垃圾评论也是一件很头疼的事情!下面就介绍我使用的防spam方法。

1.修改评论文件名

我现在就是使用这个方法!只需修改wordpress网站根目录下wp-comments-post.php的文件名(并在使用的主题目录下comments.php文件中修改代码中:action=”/wp-comments-post.php” method=”post” id=commentform”>红色部分与之相对应就可以了!)原理也很简单:就是让垃圾评论群发器找不到网站评论目录的路径!如果以后再有垃圾评论还可以再修改!

2.使用小墙

小墙近乎100%的防spam能力,相当强大!只需将下列代码 复制到模板的 functions.php 中即可。

/* -----------------------------------------------
 *  <<小牆>> Anti-Spam v1.9 by Willin Kan.
 *  小墙 1.9 12月31日更新
 */
 //建立
 class anti_spam {
   function anti_spam() {
     if ( !is_user_logged_in() ) {
       add_action('template_redirect', array($this, 'w_tb'), 1);
       add_action('pre_comment_on_post', 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="60" rows="4" style="display:none"></textarea>", $input);') );
      }
   }
   //检查
   function gate() {
     ( !empty($_POST['w']) &;& empty($_POST['comment']) ) ? $_POST['comment'] = $_POST['w'] : $_POST['spam_confirmed'] = 1;
   }
   //处理
   function sink( $comment ) {
     if ( !empty($_POST['spam_confirmed']) ) {
       //方法一:直接挡掉, 将 die(); 前面两个斜线删除即可.
       //die();
       //方法二:标记为spam, 留在资料库检查是否被误判.
       add_filter('pre_comment_approved', create_function('', 'return "spam";'));
       $comment['comment_content'] = "[ 小墙判断这是一个Spam! ]n" . $comment['comment_content'];
     }
     return Extra close brace or missing open braceanti_spam = new anti_spam();
// -- END ----------------------------------------

原文地址:http://www.aircyan.com/system/no-plugin-anti-spam.html

4 条评论

  1. 这个似乎不太好用,还是1.8.4的版本号用一些

    1. 这个我也是转载的,具体也不知道哪个版本好用,嘿嘿!

  2. 模板的 functions.php是指主题的functions.php文件吗?还是wp-includes目录下的?

回复 taho 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注