Como remover a capacidade dos comentadores de adicionar hiperlinks aos comentários?

3

Gostaria de filtrar a capacidade de um comentarista de adicionar hiperlinks ao texto do comentário.

Eu removi o campo "websites" do mix para reduzir a quantidade de spammas já (consulte: Remover o campo" Website "dos comentários e respostas? ") que ajudou muito.

Por padrão, eles podem usar o < um '> tag para fazer isso no texto da caixa de comentários, que permite que os spammers incorporem links a seus sites.

Existe uma maneira de filtrar esse recurso no editor wysiwyg para campos de comentários?

    
por cpuguru 03.01.2011 / 18:01

2 respostas

8

O WP executa tantos filtros bonitos neste material que é fácil se perder.

Aqui está o que acabei com:

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;
}

Isso elimina links claramente definidos e remove o filtro que transforma links de texto simples em links marcados corretamente.

    
por Rarst 03.01.2011 / 18:52
1

Outra solução -

A função que removerá todos os <a>...</a> de um texto (provavelmente é melhor usar strip_tags em vez de regex aqui):

     function strip_links($content){
       return preg_replace('/<a[^>]*>(.*)<\/a>/iU','', $content);
     }

Remova links de todos os novos comentários permanentemente antes que eles sejam inseridos no banco de dados:

     add_filter('preprocess_comment', 'new_comment_strip_links');
     function new_comment_strip_links($commentdata){
       $commentdata['comment_content'] = strip_links($commentdata['comment_content']);
       return $commentdata;
     }

Ou, remova links antes de exibi-los na tela (seu tema deve executar o filtro 'comment_text' em algum lugar de um arquivo de modelo):

     add_filter('comment_text', 'display_comment_strip_links');
     function display_comment_strip_links($content){
       return strip_links($content);
     }
    
por onetrickpony 03.01.2011 / 19:04