最近这段时间都在寻找限制wordpress中垃圾评论的方法,每天后台都收到大量的垃圾评论,基本上都是机器群发的外链信息,导致正常评论都会淹没在垃圾评论中了,看了很多插件,但是感觉麻烦,于是想到了通知限制wordpress评论文章字数的方法来限制垃圾评论。
原理就是垃圾评论的字数非常长,包含链接等信息,所以可以通过字数来限制,这样在发送评论的时候,wordpress会自动检测评论字数,如果大于制定的数量,就无法发送到数据库中,也能减少数据库的内容数量。代码如下:
//下面这个代码是限制评论字数,太多很可能是软件群发的垃圾信息。注意:一个汉字是三个长度,一个英语字母是一个长度。
add_filter( 'preprocess_comment', 'wpb_preprocess_comment' );
function wpb_preprocess_comment($comment) {
if ( strlen( $comment['comment_content'] ) > 200 ) {
wp_die('Comment is too long. Please keep your comment under 5000 characters.');
}
return $comment;
}
上面要注意的就是一个汉字长度是三,一个英语字母长度是一。
上面的代码稍微修改下,就可以限制评论字数太少的也无法发送成功。
2月26号补充:想到个方法可以更好的识别垃圾评论,那就是垃圾评论里面有网址,可以通过网址中的字符来判断是不是垃圾评论,所以在上面的基础上,增加了一点代码,改成如下,效果更好:
add_filter( 'preprocess_comment', 'wpb_preprocess_comment' );
function wpb_preprocess_comment($comment) {
$txt = strstr($comment['comment_content'],"http"); ///查找是否找到了http这个字符,如果包含了,那就有可能是广告。
if ( strlen( $comment['comment_content'] ) > 350 ) {
wp_die('你的字数太长了,是不是在发广告哦??');
}
elseif($txt != false){
wp_die('包含了非法字符:http');
}
return $comment;
}
如上,红色部分代码就是检测发送过来的内容是否包含了’http’这个字符串,如果有,就会提示非法字符。当然了,还可以检测其它字符,这样基本就可以杜绝垃圾内容了。
通过文字数量来判断有一个弊端就是有可能对方并非垃圾评论,字数却比较多,所以修改字符数为350,这样可以允许100多个中文汉字评论了。