为个人博客,每天几十或上百条垃圾评论,删除这些垃圾评论也是一件很头疼的事情!下面就介绍我使用的防spam方法。
1.修改评论文件名
我现在就是使用这个方法!只需修改wordpress网站根目录下wp-comments-post.php的文件名(并在使用的主题目录下comments.php文件中修改代码中:action=”/wp-comments-post.php” method=”post” id=commentform”>红色部分与之相对应就可以了!)原理也很简单:就是让垃圾评论群发器找不到网站评论目录的路径!如果以后再有垃圾评论还可以再修改!
2.使用小墙
小墙近乎100%的防spam能力,相当强大!只需将下列代码 复制到模板的 functions.php 中即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
/* ----------------------------------------------- * <<小牆>> 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 ---------------------------------------- |
这个似乎不太好用,还是1.8.4的版本号用一些
这个我也是转载的,具体也不知道哪个版本好用,嘿嘿!
模板的 functions.php是指主题的functions.php文件吗?还是wp-includes目录下的?
是主题里的