wordpress博客网站一直倍受垃圾评论侵扰,而且基本上都是英文和网址,真的是让人不胜其烦!每个站长都会为自己的网站搭配自己喜欢的垃圾评论拦截的方案。
如:wordpress插件,Some Chinese Please插件就可以拦截不带中文字的评论,用起来很不错,而且不写入数据库,可以有效地减少spam对服务器的额外负担,其实我们完全没有必要使用插件,直接使用代码就可以实现。
ps:过多的插件也会造成wordpress的运行缓慢。
将下面代码加到主题functions.php模板文件中,效果与使用插件相同。
/* 评论必须包含中文 拦截spam */
function refused_spam_comments( $comment_data ) {
$pattern = '/[一-龥]/u';
if(!preg_match($pattern,$comment_data['comment_content'])) {
err('评论必须包含中文,谢绝英文垃圾留言。');
}
return( $comment_data );
}
add_filter('preprocess_comment','refused_spam_comments');
最终效果就是,如果评论中不包含中文就会有错误提示。
其它一些使用过程会写入数据库的防spam插件不建议使用, 比如WordPress官方的防垃圾插件Akismet会在数据库中留下大量的信息,增加服务器负担,开启后会明显感觉到网站速度变慢。
还有就是那些使用技术手段,比如GET、POST等方式直接评论而不经过前台表单的垃圾评论我们就无能为力了,其它什么验证码、滑动解锁等等面对这些技术手段全部无用,只有屏蔽IP才能解决这个问题。
要屏蔽IP可以,在网站根目录下的.htaccess文件中添加:
1.Order Deny,Allow
2.Deny from xxx.xxx.xxx.xx
禁止某些IP访问,也可以达到屏蔽垃圾评论的目的。不过效果不明显,我们禁用的ip只能是常见的ip,一些陌生的,这个方法还是无能为力。