Adapta tus comentarios a WordPress 2.7 sin problemas
Bueno, me he alargado y lo he dejado mucho tiempo, pero más vale tarde que nunca. Entre turrones y garrapiñadas he pensado que sería interesante hacer digestión haciendo algo constructivo, así que vamos al lio.
Introducción
Como es dificil hacer un artículo que abarque a todos los themes disponibles vamos a usar Kubrick para ilustrar con ejemplos este tutorial. Al ser el theme por defecto de WordPress todos disponemos de él para poder hacer las pruebas mientras seguimos el tutorial.
Para los menos experimentados, el Theme Kubrick es el que nos encontraremos en la carpeta wp-content/themes/default/, concretamente vamos a editar el fichero comments.php de este directorio.
Detectar WordPress 2.7
Si estamos desarrollando un theme para WordPress 2.7, este punto puede ser interesante, pero si por el contrario estás haciendo un theme para tu blog, el que ya está en WordPress 2.7, puedes ahorrarte hacer la comprobación ya que siempre se va a cumplir.
if (function_exists('wp_list_comments')) :
// WordPress 2.7
else :
// WordPress 2.6-
endif;
Veamos como quedaría en el theme Kubrick.
to “”
<li id="comment-">
Says:
comment_approved == '0') : ?>
Your comment is awaiting moderation.
<a href="#comment-" title=""> at
comment_status) : ?>
Como podemos ver, ya tenemos el sistema medio montado. Ahora si el WordPress en el que está corriendo nuestro theme no tiene WordPress 2.7 nos mostrará los comentarios como los estaba haciendo hasta ahora, en caso contrario y con WordPress 2.7 disponible no mostraremos nada, por el momento.
wp_list_comments()
La clave de todo es esta función que se encarga de mostrarnos los comentarios de nuestros posts de una forma sencilla y rápida. Como la mayoría de funciones de WordPress esta tiene una serie de parámetros para personalizar su salida.
- walker, nos activa/desactiva los comentarios anidados (Por defecto Null)
- max_depth, máxima profundidad de estos comentarios (Por defecto ”)
- style, estilo con el que WordPress nos permite mostrar los comentarios [ul, div] (Por defecto ul)
- callback, función que nos permite personalizar completamente la salida de los comentarios, se lanzará en cada uno de los comentarios.
- end-callback, función que se lanzará al terminar la iteración de los comentarios.
- type, especifica el tipo de comentarios a mostrar [comment, pingback, all] (Por defecto all)
- page, página en la que empezamos a mostrar los comentarios.
- per_page, comentarios por página
- avatar_size, tamaño del avatar de los usuarios que comentan (Por defecto 32)
- reverse_top_level, nos muestra los comentarios en orden inverso al que se introdujeron (Por defecto Null)
- reverse_children, orden inverso en los hijos de los comentarios anidados (Por defecto ”)
Bueno, ahora que conocemos las opciones disponibles en wp_list_comments() incorporémoslo en el código anterior.
to “”
<li id="comment-">
Says:
comment_approved == '0') : ?>
Your comment is awaiting moderation.
<a href="#comment-" title=""> at
comment_status) : ?>
De esta forma estaremos obteniendo los comentario con los parámetros por defecto, pero ¿que pasa si queremos adaptar a nuestro gusto los comentarios?
Parámetro callback
El parámetro callback representa el nombre de una función que será lanzada en cada comentario y a la que se le pasará el comentario por parámetro para disponer de todas las opciones dentro de ella. De esta forma podemos personalizar nuestros comentarios.
<?php wp_list_comments('callback=MI_TEMPLATE_DE_COMENTARIOS'); ?>
Exactamente lo que hará WordPress, será hacer pasar la variable $comment por esta función en cada comentario, haciendo que esta sea la encargada de pintar la salida por pantalla.
Responder comentarios
La posibilidad de responder a comentarios sin tener que montarlo tu mismo, es un aliciente más que WordPress 2.7 nos ofrece, pero para entender como funciona debemos conocer comment_reply_link().
comment_reply_link();
Se trata de generar el enlace necesario para poder responder a un comentario, en el código anterior, vemos como lo insertamos despues de comment_text(). Por defecto esta función recibe 3 parámetros:
$args, argumentos que condicionarán la salida$comment, comentario que vamos a responder$post, post en el que se encuentra en comentario que hemos de responder.
Los argumentos disponibles que condicionarán la salida nos darán una cierta flexibilidad a la hora de generar el enlace:
- add_below, patrón al que se le añadirá el ID del comentario que indicará a que comentario hará referencia la respuesta (Por defecto comment-XXX)
- respond_id, lugar en el que se insertará el comentario recien comentado (Por defecto respond)
- reply_text, etiqueta que informará al usuario de la acción del enlace (Por defecto “Reply”)
- login_text, etiqueta que mostrará en caso de que el usuario no esté logueado y sea necesario (Por defecto “Log in to Reply”)
- depth, profundida del comentario, para comentarios anidados (Por defecto 0)
- before, HTML que se insertará delante del enlace
- after, HTML que se inseratá despues del enlace.
Esto nos generará el enlace necesario para responder a comentarios, pero aún nos queda adaptar el theme para poder recibir la respuesta.
La magia del javascript
La respuesta de comentarios necesitará de unas funciones de Javascript para hacer más dinámica la tarea de responder a los comentarios, para ello tendremos que añadir en el de nuestro theme la siguiente línea:
if ( is_singular() ) wp_enqueue_script( 'comment-reply' );
Se encargará de cargar los Javascript necesarios para disfrutar de esta funcionalidad.
Modificando el formulario
WordPress por si solo no puede detectar los nombres de los elementos de nuestros formularios y como necesitan ciertos campos que hasta ahora no existían nos obliga a añadir esta línea en nuestro formulario para generar los campos necesarios para la respuesta.
Si nuestro theme tiene un elemento llamado comment_post_ID, podemos borrarlo ya que esta función se encargará de generarlo automáticamente.
Para indicarle el lugar en el que se encuentran los elementos necesarios para responder, debemos insertar un enlace en forma de ancla en el formulario, simplemente nos servirá para llevar el foco al formulario de envio:
Para terminar, tenemos la función comment_form_title(), que se encargará de cambiar el famoso texto de “Leave a comment” por un “Leave a reply for XXX” en caso de estar respondiendo un comentario, para ello deberemos reemplazar el texto:
Leave a Reply
por este otro:
Si el usuario decide cancelar la acción y desechar la respuesta al comentario debe tener un enlace que le permita hacer esto, por eso tendremos que añadirlo en nuestro formulario de comentarios con la siguiente función:
¿Y la paginación?
Otra de las mejoras que los comentarios nos traen en esta nueva versión, es la paginación de los mismos, haciendo que los posts con centenares de comentarios queden un poco más legibles. Para ello tenemos un serie de funciones que nos permiten dotar nuestros themes de esta funcionalidad. Evidentemente estas funciones será usadas únicamente en el apartado que destinamos a WordPress 2.7 ya que estas funciones no están disponibles para versiones previas.
next_comments_link();
Nos enlaza con la siguiente página de comentarios dentro de nuestro post. Esta función recibe 2 parámetros:
- label, etiqueta que deseamos mostrar para informar al usuario del uso del enlace. (Por defecto “Newer Comments »”)
- max_pages, máximo de páginas mostradas para enlazar. (Por defecto 0)
previous_comments_link();
Nos enlaza con los comentarios anteriores, si los hubiera. Por defecto dispone de un único parámetro:
- label, etiqueta que deseamos mostrar (Por defecto “« Older Comments”)

































