这篇文章距离上次修改已过半年,其中的信息可能已经有所发展或是发生改变。

转换为语音并朗读全文 00:00 / 00:00

最近大家是不是也发现垃圾评论变得猖獗起来了,好吧,博主研究发现,垃圾评论无非就是一堆链接,其实Akismet已经把这些评论移到“垃圾评论”去了,但是看着数据库里一堆垃圾评论,心里着实不舒服。

于是,麦葱研究发现...我们可以在评论根源上干掉垃圾评论。

把下面的代码扔到主题functions.php里面

注:本站使用comments-ajax.php处理提交,用err输出错误信息,
如果贵站没有使用comments-ajax.php,那么请用wp_die输出错误信息!
方法:将下面代码中的err换成wp_die!否则会出现500错误!
//评论外链数检测
function BYMT_spamlinks($comment) {
$spamlinks = preg_match_all( '/<a [^>]*href/i', $comment['comment_content'], $out );
if ($spamlinks>1){ //1为允许的链接数量
err(__('抱歉,检测到评论外链过多,请重写'));
} else {
return $comment;
}
}
add_filter('preprocess_comment', 'BYMT_spamlinks');

后台设置不是有“当某条评论包含超过X个超链接时,将其放入等待审队列”的设置项,我们也可以直接套用这个。

//评论外链数检测
function BYMT_spamlinks($comment) {
$spamlinks = preg_match_all( '/<a [^>]*href/i', $comment['comment_content'], $out );
$max_links = get_option( 'comment_max_links' );
if ($spamlinks>$max_links){
err(__('抱歉,检测到评论外链过多,请重写'));
} else {
return $comment;
}
}
add_filter('preprocess_comment', 'BYMT_spamlinks');

OK,就是这样,上面两段代码大家可以根据需要进行添加。

带符号 * 的表示必填项
  1. 罐子
    罐子

    我来看看

    回复
  2. 碎碎念ZWS
    碎碎念ZWS

    直接把链接取消掉,剩下一堆文字就行了,哈哈

    回复
  3. 永世的缘
    永世的缘

    挺不错的,试一下。。。

    回复
  4. 快乐家园
    快乐家园

    要是能搞白名单,判断是哪里的链接就更好了,我们可以允许站内,百度等站点的链接。

    回复
  5. 云淡然
    云淡然

    :x 又一个在垃圾评论防御上挣扎

    回复
  6. 神情话意
    神情话意

    外链干掉了。。。日文垃圾又来了。。。

    回复
    1. 极雪
      极雪

      日文的也可以通过代码干掉

      回复
  7. 天妈博客
    天妈博客

    牛人就是牛轰轰的。

    回复
  8. 垃圾站
    垃圾站

    今天签到啦!时间:18:53:31

    回复