如何删除评论者向评论添加超链接的能力?

时间:2011-01-03 作者:cpuguru

我想能够过滤出一个评论者的能力,添加超链接在他们的评论文本。

我从混合中删除了“网站”字段,以减少垃圾邮件的数量(参见:Removing the "Website" Field from Comments and Replies?)这有很大帮助。

默认情况下,他们可以使用“<;在评论框文本中添加标签,允许垃圾邮件发送者将超链接嵌入其网站。

有没有办法在所见即所得编辑器中过滤掉评论字段的该功能?

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

WP在这些东西上运行了如此多的美化过滤器,以至于很容易丢失。

以下是我的结论:

remove_filter(\'comment_text\', \'make_clickable\', 9);
add_filter(\'pre_comment_content\', \'strip_comment_links\');

function strip_comment_links($content) {

    global $allowedtags;

    $tags = $allowedtags;
    unset($tags[\'a\']);
    $content = addslashes(wp_kses(stripslashes($content), $tags));

    return $content;
}
这将清除定义明确的链接,并删除将纯文本链接转换为正确标记链接的过滤器。

SO网友:onetrickpony

另一种解决方案-

将删除所有<a>...</a> 从文本中(这里最好使用strip\\u标记而不是regex):

     function strip_links($content){
       return preg_replace(\'/<a[^>]*>(.*)<\\/a>/iU\',\'\', $content);
     }
从所有新评论中删除链接permanently, 在db中安装之前:

     add_filter(\'preprocess_comment\', \'new_comment_strip_links\');
     function new_comment_strip_links($commentdata){
       $commentdata[\'comment_content\'] = strip_links($commentdata[\'comment_content\']);
       return $commentdata;
     }
或者,在我们将链接输出到屏幕之前删除链接(您的主题应该在模板文件中的某个位置运行“comment\\u text”过滤器):

     add_filter(\'comment_text\', \'display_comment_strip_links\');
     function display_comment_strip_links($content){
       return strip_links($content);
     }

结束

相关推荐

I can't view or add comments

嘿,那里。我刚刚建立了这个网站。http://www.paledogstudios.com 它工作得很好,只是我似乎看不到过去的评论(这个博客是从blogger导入的)或添加评论。我知道这是代码而不是设置,因为有人告诉我,但他没有进一步帮助我。他说这可能在索引上。php帮助