Removendo o campo "Site" dos comentários e respostas?

8

Em um esforço para combater o spam de comentários, eu gostaria de ocultar ou remover o campo "Site" da seção "Deixar uma resposta" para comentários na página e no site.

Não desejo aumentar os rankings de outras páginas, fazendo com que elas incorporem seus URLs nos comentários dos meus sites, o que parece ser o que 99% dos comentários no meu site desejam fazer.

Estou usando o tema Vinte e Dez, se isso faz alguma diferença na resposta.

Obrigado!

cpuguru
fonte
Por que não usar Akismet e / ou captchas?
Raphael

Respostas:

13

Crie um arquivo wp-content/plugins/com este código:

<?php
/*
Plugin Name: Get Rid of Comment Websites
*/
function my_custom_comment_fields( $fields ){
  if(isset($fields['url']))
    unset($fields['url']);
  return $fields;
}

add_filter( 'comment_form_default_fields', 'my_custom_comment_fields' );

Normalmente, eu diria que colocá-lo no arquivo functions.php do seu tema, mas não recomendo fazer isso para um tema que possa ser atualizado como o Twenty Ten. Dessa forma, você poderá adicionar essa funcionalidade como um plug-in que pode ser desativado.

John P Bloch
fonte
Isso fez o truque - obrigado! Criou uma pasta chamada "remove-url-field" e criou um arquivo dentro dela chamado "remove-url-field.php" e, em seguida, ativou o plug-in que apareceu na interface Plugins. Rápido e fácil!
cpuguru
2
Para plugins simples como o acima, não é necessário criar uma pasta, um arquivo autônomo funcionará bem .. (em última análise, é sua escolha, é claro, apenas salientar que não é um requisito para plugins).
T31os
Esta é realmente a maneira mais simples? Parece estranho que existam opções no administrador para "O autor do comentário deve preencher o nome e o email", por exemplo, mas não para ocultar o campo Site.
Página
O que é complicado nisso? Se você não quiser lidar com o FTP, tenho certeza de que poderá encontrar algo no repositório de plug-ins que faria isso.
John P Bloch
11
@ MD004 Não é necessário fechar a etiqueta PHP no final de um ficheiro. Em alguns casos, pode até ser prejudicial, pois alguns editores acrescentam silenciosamente uma nova linha no final do arquivo, que envia a nova linha ao navegador como a primeira parte do corpo da resposta. Isso fica muito ruim quando você precisa enviar cabeçalhos personalizados depois do carregamento dos plug-ins ou quando o XML espera que o texto correto seja o primeiro texto do documento, não uma nova linha.
John P Bloch
0

Além da boa resposta de John, uso uma solução mais direta, que me permite mais controle sobre o formulário de comentários e seus campos.

Por padrão, o tema comments.php( vinte e onze, por exemplo ) pode ter algo parecido com isto -<?php comment_form(); ?>

Agora, usar <?php comment_form(); ?>é o mesmo que:

<?php
    $args = array(
        'fields' => array(
                        'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'url'    => '<p class="comment-form-url"><label for="url">' . __( 'Website' ) . '</label>' .
                                        '<input id="url" name="url" type="text" value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" /></p>',
        );
    );
    comment_form( $args );
?>

A única diferença, AFAIK, é que a versão mais longa oferece mais flexibilidade. Como no seu caso, você não deseja mostrar o campo do site. Então, você simplesmente remove o urlparâmetro na fieldsmatriz e o resultado final é este:

<?php
    $args = array(
        'fields' => array(
                        'author' => '<p class="comment-form-author">' . '<label for="author">' . __( 'Name' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30"' . $aria_req . ' /></p>',
                        'email'  => '<p class="comment-form-email"><label for="email">' . __( 'Email' ) . '</label> ' . ( $req ? '<span class="required">*</span>' : '' ) .
                                        '<input id="email" name="email" type="text" value="' . esc_attr(  $commenter['comment_author_email'] ) . '" size="30"' . $aria_req . ' /></p>',
        );
    );
    comment_form( $args );
?>

... e é disso que você precisa.

Leitura recomendada: Referência da função do Codex do WordPress / comment_form

Arquivo de origem: (versão do tronco - mais atual)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php

sou eu
fonte
0

Não é uma solução perfeita, as outras soluções são boas

Em vez de modificar o PHP, o formulário de comentários, de qualquer maneira, é apenas um campo de entrada, o que existe se estiver carregado e oculto? Em vez de escrever ifinstruções ou rewriteo formulário de comentários

simplesmente oculte o campo URL

.comment-form-url {
    display: none;
}
bhv
fonte
0

Remover o campo do site do formulário de comentários é bastante fácil. Abaixo está o código com apenas algumas linhas:

function cs_remove_comment_website_fields($fields) {
  unset($fields['url']);
  return $fields;
}
add_filter('comment_form_default_fields','cs_remove_comment_website_fields');

Fonte: Como remover o campo do site do comentário do WordPress?

Faruque Ahamed Mollick
fonte