芝兰生幽谷
不以无人而不芳

Wrodpress拦截垃圾评论的方法

当站点达到一定规模时,评论的也就开始多起来了,如何拦截垃圾评论也就成了一个问题,最近本站也开始多了一些脚本刷的评论;虽然本站开启了人工审核,每天收到垃圾评论也让人心烦,最近整理了些垃圾评论拦截方式,经过试验着实有效,遂整理出分享给大家.

评论黑名单法:在WordPress讨论里可以设置黑名单关键词、IP、URL等,当评论中含有黑名单里的字符时,就会将其列为垃圾评论。

评论黑名单代码代码如下,将其添加在functions.php:

//评论黑名单
function mac_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"); 
exit('你已被列入黑名单,无法进行评论,如有疑问请联系管理员!'); 
} else { 
return $comment; 
} 
} 
add_filter('preprocess_comment', 'mac_fuckspam');

评论屏蔽纯外文法:本站前段时间有大量的纯英语评论,相信也是通过脚本刷出来的,这样的评论也十分让人反感。这里分享一种屏蔽纯外文评论的方法。

评论纯外文法代码如下,将其添加在functions.php:

//屏蔽纯外文评论
function refused_spam_comments($comment_data) {
$pattern = '/[一-龥]/u';
$jpattern = '/[ぁ-ん]+|[ァ-ヴ]+/u';
if (!preg_match($pattern, $comment_data['comment_content'])) {
err(__('拒绝纯外文评论。Rejection is just a foreign language comment.'));
}
if (preg_match($jpattern, $comment_data['comment_content'])) {
err(__('拒绝纯外文评论。Rejection is just a foreign language comment.'));
}
return ($comment_data);
}
add_filter('preprocess_comment', 'refused_spam_comments');

屏蔽长链接法,大多数垃圾评论会含有长链接,可以采用以下方法屏蔽。

评论长链接代码如下,将其添加在functions.php:

//屏蔽长链接法
function lang_url_spamcheck($approved$commentdata) {

    return (strlen($commentdata['comment_author_url']) > 50) ?

    'spam' : $approved;

}

add_filter('pre_comment_approved', 'lang_url_spamcheck', 99, 2);

屏蔽评论内容带链接的评论

//屏蔽评论内容带链接的评论
function Shield_link($comment_data) {

    $links = '/http:\/\/|https:\/\/|www\./u';

    if (preg_match($links$comment_data['comment_author']) || preg_match($links$comment_data['comment_content'])) {

        err(__('评论中禁止含有链接!'));

    }

    return ($comment_data);

}

    add_filter('preprocess_comment', 'Shield_link');

限制评论的字数法,这个个人觉得很有必要,部分朋友可能为了留一个链接,就会评论一些类似于“学习了、好文章、转发了”之类的无用评论;个人觉得不喜欢这类评论,所以采用了评论字数限制。

限制评论字数有两种方式:

第一种是普通方式,代码如下:

//设定评论字数限制开始
function set_comments_length($commentdata) {
$minCommentlength = 3; //最少字数限制,自行设置
$maxCommentlength = 1000; //最多字数限制,自行设置
$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 .'个字)');
exit;
}
if ($pointCommentlength > $maxCommentlength){
header("Content-type: text/html; charset=utf-8");
wp_die('对不起,您的评论字数过多,请少于' . $maxCommentlength .'个字(目前字数:'. $pointCommentlength .'个字)');
exit;
}
return $commentdata;
}
add_filter('preprocess_comment', 'set_comments_length');

普通方法可能在一些WordPress主题上不兼容,比如本站现在使用的DUX主题就不兼容此方法,所以有了第二种方法:

AJAX方法,代码如下:

//限制评论字数
function set_comments_length($commentdata) {
$minCommentlength = 3; //最少字数限制
$maxCommentlength = 200; //最多字数限制
$pointCommentlength = mb_strlen($commentdata['comment_content'],'UTF8'); //mb_strlen 1个中文字符当作1个长度
if ($pointCommentlength < $minCommentlength){
err('抱歉,您的评论字数过少,请至少输入' . $minCommentlength .'个字(目前字数:'. $pointCommentlength .'个字)');
exit;
}
if ($pointCommentlength > $maxCommentlength){
err('对不起,您的评论字数过多,请少于' . $maxCommentlength .'个字(目前字数:'. $pointCommentlength .'个字)');
exit;
}
return $commentdata;
}
add_filter('preprocess_comment', 'set_comments_length');

使用了以上部分方法后,本站垃圾评论暂时没有了,舒心多了。

可以选取部分适用的方法进行设置,但需要注意一些功能可能会重复。

*参考资料 《纯代码实现彻底屏蔽WordPress站点垃圾评论

WordPress站点2种限制评论字数的方法

赞(0)
转载请注明出处:猫鼬博客 » Wrodpress拦截垃圾评论的方法
分享到: 更多 (0)

评论 9

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    这种方法我用过,不过我好久没用wp了

    子午书屋4周前 (10-17)回复
  2. #2

    总结得很全面了,很不错哈

    闲鱼4周前 (10-19)回复
  3. #3

    拦截垃圾评论还是非常有必要的

    boke112导航4周前 (10-22)回复
  4. #4

    我的站是用typecho 也有相关的插件,没有这么详细的。

    share12233周前 (10-26)回复
    • 这些方法都是通过了实践然后再总结分享的,确实可行。

      十八3周前 (10-26)回复
  5. #5

    WP用不惯,还是自己开发好用点。

    户外摄影2周前 (11-03)回复
    • 自己了解自己需要什么,定制起来很方便。

      十八2周前 (11-03)回复
  6. #6

    我一般不会拦截,都是自己去删

    • 我之前也是,后来多了,就加了拦截代码,省心多了。

      十八7天前回复