¿Cómo modificar el formulario de comentarios de WordPress?

Para modificar el formulario de comentarios de WordPress hay que usar dos funciones, una para los campos (fields) y otra para las cadenas o argumentos.

kenny scharf

archivado en: WordPress / 4 septiembre, 2012

Me chifla WordPress, creo que es el mejor gestor de contenidos que existe ahora mismo (y puedo prometer y prometo que en otra entrada explicaré por qué comparando Drupal, Joomla y WordPress prefiero este último), pero, claro está, aún tiene varias cosas que se podrían hacer mejor. Una de ellas es el sistema de comentarios, ya que desde el back-office (el dashboard) apenas se pueden modificar algunos parámetros, entre los que no se encuentran elementos tan fundamentales como el texto de presentación o las CSS. En esta entrada veremos cómo hacerlo por código. Que no se asuste nadie, con saber un poco de HTML y CSS, con cortar y pegar, espero que esta entrada  sirva de ayuda ^^.

WordPress distingue dos tipos de elementos en un formulario, los campos de entrada de datos o fields y las cadenas de texto o strings. Los fields son el input donde se introduce el nombre, la dirección de correo y la URL (curiosamente, no incluye aquí el textarea de los comentarios); y los strings, que son todos los demás elementos: el titular, el texto previo a los comentarios, el posterior...

Para cambiar los fields

Para modificar los fields hay que añadir una función en el archivo functions.php, en la cual se indica qué cadena corresponde a cada campo (fields['author']; fields['email'] y fields['url']). Por ejemplo, para los comentarios de este blog he cambiado el label de los inputs poniéndolos a la derecha y he añadido una clase que se llama campo-formulario:

function alter_comment_form_fields($fields) {

$fields['author'] = ''.'<input id="author" type="text" name="author" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" />'.'<label for="author">' . __( 'Nombre/Alias*','thebit') . '</label> ' . ( $req ? '<span>*</span>' : '' ) .'';

$fields['email'] = ''.'<input id="email" type="text" name="email" value="' . esc_attr( $commenter['comment_email'] ) . '" size="30" />'.'<label for="email">' . __( 'E-mail*','thebit') . '</label> ' . ( $req ? '<span>*</span>' : '' ) .'';

$fields['url'] = ''.'<input id="url" type="text" name="url" value="' . esc_attr( $commenter['comment_url'] ) . '" size="30" />'.'<label for="url">' . __( 'URL','thebit') . '</label> ' . '';
return $fields;

}

add_filter('comment_form_default_fields','alter_comment_form_fields');

Importante: esta función hay que anclarla mediante un gancho (otro día vemos qué significa eso, por lo que hay que añadir al final:


add_filter('comment_form_default_fields','NOMBRE_DE_TU_FUNCIÓN');

Así, por ejemplo, para quitar el campo de la web, que mi madre siempre se lía y pone la misma pensando que es obligatorio, bastaría con dejar esas comillas vacías:


$fields['url'] = ' ';

Para cambiar las cadenas

Para el resto de cosas también hay que usar otra función, solo que esta vez no hay que anclarla sino declararla antes de la  función en la que llamas los comentarios. Esto es, en el archivo comments.php buscas esta función:

<?php comment_form($comments_args); ?>

Y antes añades esta sentencia en la que almacenas dentro de una variable el resultado de una función que luego pondremos en functions.php y el nombre de la variable es el valor que pasas por defecto en la función. Te debería quedar algo así:

<?php $comments_args = cambiar_argumentos(); ?>

comment_form($comments_args); ?>

Luego en el archivo functions.php añades una función —en este caso, la que he llamado cambiar_argumentos()— en la que vas modificando en un array los valores que quieras. Por ejemplo, para los comentarios de este blog la he dejado así:

function cambiar_argumentos(){

$comments_args = array (

'title_reply'=>'</pre>

<h4>Aportar un comentario</h4>

<pre>','comment_notes_before'=>'','comment_notes_after' => 'Los campos marcados con un * son obligatorios. El correo no se publicar&aacute.'.'' . sprintf( __( 'Puedes usar estas etiquetas de <abbr title="HyperText Markup Language">HTML</abbr>: %s' ), ' <code>' . allowed_tags() . '</code>' ) . '',

'comment_field' => '<label for="comment">' . __( 'Comentario','thebit') . '</label><textarea id="comment" name="comment" rows="8" cols="45"></textarea>',

'id_submit'=>'submit-comentarios',

'label_submit' => 'enviar comentario',

);

return $comments_args;

}

Puedes cambiar todos los parámetros del formulario. Para eso, basta con saber cómo se llaman, añadir al array el signo => que sirve para relacionar valores de un array y añadir el código HTML que necesites. Puedes ver todos los parámetros en la página de WordPress en la que explica cómo modificar el formulario de comentarios.

Espero que esta entrada te haya resultado útil : ).

|| Tags: ,

valoración de los lectores sobre ¿Cómo modificar el formulario de comentarios de WordPress?

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración negativa
  • estrellica valoración negativa
  • 3.3 sobre 5 (30 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

10 respuestas a “¿Cómo modificar el formulario de comentarios de WordPress?

  1. ¿Como puedo conseguir que en los campos de entrada de datos aparezcan los datos de los usuarios registrados sin tener que escribirlos?
    Es que mis lectores me comentan que tienen que poner los datos cada vez que comentan y es muy incómodo.
    Gracias por adelantado

  2. marcos el dijo:

    Hola Dolega, programado a pelo es algo complicado. No sé si existe algún plugin que haga eso, pero quizás podrías incorporar el sistema Disqus, que supongo que hace eso.

  3. Hola estimado, me parece muy bueno tu articulo, es justo lo que estaba buscando. Bueno, la verdad se muy poco de programación y en donde poner los codigos. Mi consulta es la siguiente: Requiero un campo donde este el caption de “Pais” y la opcion para que al ponerla en la caja de texto solo sea aceptado el comentario si es de un determinado pais. Se puede hacer eso? de antemano ya, muchas gracias.!

  4. marcos el dijo:

    Gracias : )

    Pues la verdad es que es complicado sin saber programar. Para hacerlo bien tendrías que controlar PHP y Ajax, que deduzco no es tu caso por lo que comentas. Quizás otra opción más sencilla sería por geolocalización en HTML5. En cualquier caso, es complicado. Te recomiendo que busques algún plugin o, mejor aún, que dejes que cualquiera comente tu web.

    Por otra parte, si lo que esta´s buscando es vetar los comentarios de china, eeuu, ucrania y demás países donde abunda el spam hay una forma mucho más sencilla: en la Lista negra de comentarios, pon caracteres que solo aparecen en lenguas raras, como el carácter я.

  5. Gracias por el post esta muy bueno, solo tengo una duda, yo quisiera que mi formulario pida que ingresen dos veces el e-mail, ya que un alto porcentaje de mis comentarios son con correos mal escritos, esto porque yo envio un correo con mayores aclaraciones de mi producto pero tengo muchos con dicho error, por eso mi interes en que en los comentarios se pida dos veces el e-mail, gracias.

  6. Quién me diria que alguna vez iba a utilizar las enseñanzas en programación del gran Stilgar!!!

    Un abrazo crack!!!