为个人博客,每天几十或上百条垃圾评论,删除这些垃圾评论也是一件很头疼的事情!下面就介绍我使用的防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 ----------------------------------------

这个似乎不太好用,还是1.8.4的版本号用一些
这个我也是转载的,具体也不知道哪个版本好用,嘿嘿!
模板的 functions.php是指主题的functions.php文件吗?还是wp-includes目录下的?
是主题里的