如何给 WordPress 添加垃圾评论过滤功能

anti-spam-for-comments

WordPress 管理工具的设置菜单里有一个针对评论内容进行过滤的功能,但都是把满足过滤条件的评论放到待审队列或者垃圾回收站里面,但这样处理当垃圾评论比较少的情况下可以满足需求,如果垃圾评论数量非常多的情况下会比较麻烦。WordPress 有插件可以实现垃圾评论过滤,本篇文章提供一种不使用插件来实现垃圾评论过滤功能的方法。

实现方法是使用 wordpress 提供的评论预处理钩链,在形成有效评论并提交到数据库前对评论内容按照相应的规则进行过滤,符合过滤条件的评论直接丢弃。具体的代码如下:

function anti_comment_spam($comment_data) {
	$links = '/http:\/\/|https:\/\/|www\./u'; //过滤规则
	if (preg_match($links, $comment_data['comment_author']) || preg_match($links, $comment_data['comment_content'])) {
		wp_die(__('Sorry, no link please!'));
	}
	return ($comment_data);
}
add_filter('preprocess_comment', 'anti_comment_spam');

把上面的代码加到 functions.php 。如果有其它的过滤要求(比如有英文内容就过滤),可以添加相应的规则表达式到上面的代码里面,方法是一样的。

发表评论

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