一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

WordPress博客防止垃圾评论骚扰的例子

时间:2016-07-18 编辑:简简单单 来源:一聚教程网

禁止黑名单中的评论提交到数据库

将下面的代码放到你主题的functions.php中:

//禁止垃圾评论提交到数据库
function uedsc_fuckspam($comment) {
if(is_user_logged_in()){ return $comment;} //登录用户不检测评论
if(wp_blacklist_check($comment['comment_author'],$comment['comment_author_email'],$comment['comment_author_url'], $comment['comment_content'], $comment['comment_author_IP'], $comment['comment_agent'] )){
header("Content-type: text/html; charset=utf-8");
wp_die('您评论可能包含广告,或者您的IP已被加入黑名单!');
} else {
return $comment;
}
}
add_filter('preprocess_comment', 'uedsc_fuckspam');

设置wordpress评论黑名单关键词:登陆 -> 设置 -> 讨论,即可看到评论黑名单了。

限制评论字数防止垃圾评论骚扰

代码如下,添加到当前主题的 functions.php 中,注意修改最少字数限制和最多字数限制:

//评论字数限制
function lajiz_comment_length( $commentdata ) {
$minCommentlength = 10; //最少字数限制
$maxCommentlength = 40; //最多字数限制
$pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1个中文字符当作1个长度
if ( $pointCommentlength < $minCommentlength )
{
header("Content-type: text/html; charset=utf-8");
wp_die('
抱歉,您的评论太短了,请至少输入' . $minCommentlength .'个字(已输入'. $pointCommentlength .'个字)javascript:history.go(-1);">返回文章页
');
exit;
}
if ( $pointCommentlength > $maxCommentlength )
{
header("Content-type: text/html; charset=utf-8");
wp_die('
抱歉,您的评论太长了,请少于' . $maxCommentlength .'个字(已输入'. $pointCommentlength .'个字)返回文章页
');
exit;
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'lajiz_comment_length' );

结合关键词屏蔽,IP地址屏蔽,非中文屏蔽垃圾评论等措施后,添加了字数限制屏蔽手段,垃圾评论从最多的一天上千条到现在几乎没有!不过防垃圾评论任重道远,他们也会升级变换!到时候博主们再发挥自己的才能屏蔽垃圾评论吧!

测试时如果出现wp模板错位现象,请将上述代码中的wp_die更改为err即可。代码如下:

//评论字数限制
function lajiz_comment_length( $commentdata ) {
$minCommentlength = 10; //最少字数限制
$maxCommentlength = 40; //最多字数限制
$pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1个中文字符当作1个长度
if ( $pointCommentlength < $minCommentlength )
{
header("Content-type: text/html; charset=utf-8");
err('
抱歉,您的评论太短了,请至少输入' . $minCommentlength .'个字(已输入'. $pointCommentlength .'个字)返回文章页
');
exit;
}
if ( $pointCommentlength > $maxCommentlength )
{
header("Content-type: text/html; charset=utf-8");
err('
抱歉,您的评论太长了,请少于' . $maxCommentlength .'个字(已输入'. $pointCommentlength .'个字)返回文章页
');
exit;
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'lajiz_comment_length' );

热门栏目