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种限制评论字数的方法

本文由 猫鼬博客 作者:十八 发表,其版权均为 猫鼬博客 所有,文章内容系作者个人观点,不代表 猫鼬博客 对观点赞同或支持。如需转载,请注明文章来源。
百度已收录

评论:

11 条评论,访客:8 条,站长:3 条

0%好评

  • 好评:(0%)
  • 中评:(0%)
  • 差评:(0%)
  1. avatar
    闲鱼发布于: 

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

  2. avatar
    share1223发布于: 

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

    • avatar
      十八发布于: 

      这些方法都是通过了实践然后再总结分享的,确实可行。

    • avatar
      十八发布于: 

      自己了解自己需要什么,定制起来很方便。

  3. avatar
    青山发布于: 

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

    • avatar
      十八发布于: 

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

发表评论