跳至正文

屏蔽/防止垃圾评论代码,强烈推荐

这几天,博客评论出现了一些小问题。先是Derek Yang反馈我的博客无法评论,后来随望淡思也说需要重复提交评论才能正常显示。我也挺纳闷的,这么几天只有流量却不见评论呢。简单测试了一下,果然是评论出现了问题:即使是我自己的账号登陆,提交的评论也无法正常显示。一查,直接是进入垃圾评论中去了。想必之前诸位网友的评论也直接被归入到垃圾评论中去了。屏蔽垃圾评论采用的是Akismet,估计是和加速乐或某种插件有些冲突的缘故。

加速乐是需要保留用的,Akismet只好停用了。但是如何屏蔽每天几百个的垃圾评论呢?之前采用的是水果验证,效果很好,但是用户体验不好,遂放弃。看到网上有说直接修改wp-comments-post.php文件名,但是2012主题comments.php文件中竟然没有wp-comments-post.php,只好作罢。使用插件的话,很多种方法,但是尽量还是不用插件的好。

于是便找到了这样一段代码(最后蓝字部分)来解决问题。经过多日的测试与反馈,这个代码相当给力,是我用过的最佳屏蔽垃圾方式,强烈推荐!!!使用时,不需要做任何修改,只需要把这段代码放到主题目录下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=$2wall$3$4/textarea><textarea name="comment" cols="50" rows="4" style="display:none"></textarea>",$input);') );
		}
	}

	function gate() {
		( !empty($_POST['wall']) && empty($_POST['comment']) ) ? $_POST['comment'] = $_POST['wall'] : $_POST['spam_confirmed'] = 1;
	}

	function sink( $comment ) {
		if ( !empty($_POST['spam_confirmed']) ) {
			die();
			}
		}
		return $comment;
	}
}
new anti_spam();

《屏蔽/防止垃圾评论代码,强烈推荐》有8个想法

    1. 加速乐前一段不稳定,最近还是很快的,毫秒级别的响应速度。
      看来这个屏蔽垃圾评论的代码还挺好的,到现在还没有一个垃圾评论,正常的评论也能发布。

    1. 正常显示啊……有的代码可以将全英文的屏蔽掉,我没有使用。
      对比测试过那么多,感觉这个是最靠谱的,没有之一。
      再拿这个当小白鼠小心给你拉黑啊,呵呵。

发表回复

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