¿Eliminar el campo "Sitio web" de comentarios y respuestas?

8

En un esfuerzo por combatir el spam de comentarios, me gustaría ocultar o eliminar el campo "Sitio web" de la sección "Dejar una respuesta" para los comentarios de la página y del sitio.

No deseo aumentar el ranking de otras páginas haciendo que incrusten sus URL en los comentarios de mi sitio, que parece ser lo que el 99% de los comentarios en mi sitio quieren hacer.

Estoy usando el tema Twenty Ten si eso hace alguna diferencia en la respuesta.

¡Gracias!

cpuguru
fuente
¿Por qué no usar Akismet y / o captchas?
Raphael el

Respuestas:

13

Crea un archivo wp-content/plugins/con 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, diría que lo coloque en el archivo functions.php de su tema, pero no recomendaría hacerlo para un tema que podría actualizarse como Twenty Ten. De esta manera, podrá agregar esta funcionalidad como un complemento que se puede deshabilitar.

John P Bloch
fuente
Eso funcionó, ¡gracias! Creé una carpeta llamada "remove-url-field" y creé un archivo dentro de ella llamado "remove-url-field.php" y luego fui y activé el complemento que apareció en la interfaz de Plugins. ¡Rapido y Facil!
cpuguru
2
Para complementos simples como los anteriores no es necesario crear una carpeta, un archivo independiente funcionará bien ... (en última instancia, es su elección, por supuesto, solo señalar que no es un requisito para complementos).
t31os
¿Es esta realmente la forma más simple? Parece extraño que haya opciones en el administrador para "El autor del comentario debe completar el nombre y el correo electrónico", por ejemplo, pero no para ocultar el campo Sitio web.
DisgruntledGoat
¿Qué tiene de complicado esto? Si no desea tratar con FTP, estoy seguro de que podría encontrar algo en el repositorio de complementos que haría esto.
John P Bloch
1
@ MD004 No es necesario cerrar la etiqueta PHP al final de un archivo. En algunos casos, incluso puede resultar perjudicial, ya que algunos editores agregarán en silencio una nueva línea al final del archivo, que enviará la nueva línea al navegador como la primera parte del cuerpo de respuesta. Esto se vuelve muy malo cuando necesita enviar encabezados personalizados más tarde que la carga de complementos, o cuando XML espera que el texto correcto sea el primer texto del documento, no una nueva línea.
John P Bloch
0

Además de la buena respuesta de John, utilizo una solución más directa que me permite tener más control sobre el formulario de comentarios y sus campos.

De forma predeterminada, su tema comments.php( Twenty Eleven's, por ejemplo ) puede tener algo como esto:<?php comment_form(); ?>

Ahora, usar <?php comment_form(); ?>es lo mismo 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 );
?>

La única diferencia, AFAIK, es que la versión más larga le brinda más flexibilidad. Como en su caso, no desea mostrar el campo del sitio web. Entonces, simplemente elimina el urlparámetro en la fieldsmatriz, y el resultado final es 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 );
?>

... que es lo que necesitas.

Lectura recomendada: WordPress Codex Function Reference / comment_form

Archivo de origen: (versión troncal - más actual)http://core.svn.wordpress.org/trunk/wp-includes/comment-template.php

soy yo
fuente
0

No es una solución perfecta, las otras soluciones están bien

En lugar de modificar PHP, formulario de comentarios, de cualquier forma, es solo un campo de entrada, qué hay si se carga y se oculta, en lugar de escribir ifdeclaraciones o rewriteel formulario de comentarios

simplemente oculta el campo URL

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

Eliminar el campo del sitio web del formulario de comentarios es bastante fácil. A continuación se muestra el código con pocas líneas:

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

Fuente: ¿Cómo eliminar el campo del sitio web del comentario de WordPress?

Faruque Ahamed Mollick
fuente