本文将详细介绍如何采取三步曲彻底告别烦人的 WordPress 批量垃圾评论问题,还你一个干净清爽的后台评论区。
刚开始使用 WordPress 程序建站的朋友们肯定或多或少都被其批量垃圾评论困扰过。然后大家就开始寻思解决的办法,找到的网上说法大都是 Akismet Anti-Spam 等类似 WP 插件或者是添加一些代码。
这些方法像 WP自带的 Akismet Anti-Spam 插件要么需要去第三方注册还会给数据库增加垃圾数据拖慢网站,要么就是代码功能不全面还有大量的“漏网之鱼”,总之就是效果都不尽如人意。
防止 WordPress 垃圾评论留言
下面将遇到的不同类型的 wordpress 批量垃圾评论留言采取针对性的反制三步曲,争取彻底告别批量的垃圾评论留言。
首先,限制访问 WP 网站根目录下 wp-comments-post 文件
为什么很多人安装了各种添加数字、图片或滑动按钮等类似验证码功能的插件而批量垃圾评论没见明显减少呢,就是因为这类垃圾评论不用填写表单直接 post wp-comments-post 文件而来,所以再多的验证码也无济于事,所以限制 wp-comments-post 文件的访问权限就能基本防止这类垃圾评论了。
禁止访问 wp-comments-post 文件的方法因网站安装环境不同而有多种,这里就说一下 Apache 下利用 .htaccess 限制 IP 访问的办法。
在根目录的 .htaccess 文件中添加以下代码:
Order deny,allow
Deny from All
Allow from 127.0.0.1
其中,第4行可以更改添加你所允许的特定 IP 地址或者删除什么都不加。
第二步,非插件代码式的添加计算结果验证码
限制直接 post wp-comments-post 文件的批量垃圾评论后还有机器人批量导入表单的垃圾留言需要解决,这就需要简单的验证码来实现了,但这么一个简单的功能还要安装一个插件消耗网站资源,怎么想都不是很划算,所以这里就用添加代码的方法来实现了。
在你主题目录下的 funtions.php 文件加入以下代码:
//自定义算术验证函数
function spam_protection_math(){
//获取两个随机数, 范围0~9
$num1=rand(0,9);
$num2=rand(0,9);
//最终网页中的具体内容
echo
""
.""
."";
}
function spam_protection_pre($commentdata){
$sum=$_POST['sum'];//用户提交的计算结果
switch($sum){
//得到正确的计算结果则直接跳出
case $_POST['num1']+$_POST['num2']:break;
//未填写结果时的错误讯息
case null:err('抱歉: 请输入下面框中的计算结果.');break;
//计算错误时的错误讯息
default:err('错误: 输入的计算结果不正确,请重新输入!');
}
return $commentdata;
}
if(!is_user_logged_in() && $comment_data['comment_type']==''){
add_filter('preprocess_comment','spam_protection_pre');
}
并在你的主题文件夹下 commenter.php 文件的相应位子加入调用代码:(一般就是就是昵称和邮箱下面和提交评论按钮前的地方)
注意:可以适当修改 css 从而配合你的主题样式(一般就是套用昵称和邮箱的 css样式即可),如有什么不清楚的地方可下面留言共同探讨!
最后,再完善一下,禁止非汉字评论和限制评论字数
还是在当前 WP 主题目录下的 funtions.php 文件中加入代码:
// WordPress留言禁止非汉字评论
function BYMT_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
err( "抱歉,您的评论必须含有汉字" );
}
if(preg_match($jpattern, $incoming_comment['comment_content'])){
err( "抱歉,您的评论必须含有汉字" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'BYMT_comment_post');
//WordPress留言评论字数限制
function Paopao_comment_length( $commentdata ) {
$minCommentlength = 5; //最少输入2个字
$maxCommentlength = 100; //最多输入100个字
$pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1个中文字符当作1个长度
if ( $pointCommentlength < $minCommentlength )
{
err( __('抱歉,您的评论太短了,请至少输入'. $minCommentlength .'个字(已输入'. $pointCommentlength .'个字)') );
}
if ( $pointCommentlength > $maxCommentlength )
{
err( __('抱歉,您的评论太长了,请不要超过'. $maxCommentlength .'个字(已输入'. $pointCommentlength .'个字)') );
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'Paopao_comment_length' );
以上代码都可以根据自己的需要适当修改,如提示语言和限制字数的多少。
好了,完成上面的三步曲后,一段时间后你再看看你的 wordpress 网站还会有批量垃圾评论留言了吗,是不是感觉整个世界都清净了!(* ̄︶ ̄)