Blog

ExtJS and Sencha Touch Themes and Templates

Paginación y conversaciones en WordPress 2.7

Mar 09, 2009 | Español | By | 2 Comments | Read in English

WordPress 2.7 integra la posibilidad de agregar conversaciones en los comentarios, además nos permite paginar los comentarios de una manera muy sencilla.

Paginación y conversaciones en WordPress 2.7
Author: Crysfel

I'm a software developer with 6+ years of experience, when I'm not developing software I may be writing a tutorial, you can follow me on twitter

Por defecto esta funcionalidad está desactivada, para activarla es necesario ir al panel de control en el menú “Settings” en la opción “Discussion” activar la opción “Threading” y “Paging”.

Si el tema que estás usando para tu blog soporta estas características con esto es suficiente, pero si no, es necesario cambiar algunas cosas que veremos a continuación.

Crea un archivo dentro de la carpeta de tu tema con el nombre “comments.php”, este es el archivo que WordPress utiliza para manejar los comentarios, es muy probable que ya exista este archivo dentro de tu tema, si es así vamos a editar el contenido.

Protección con password

Al inicio del archivo vamos a revisar si los comentarios están protegidos con un password; en WordPress 2.7 existe una función (post_password_required) la cual hace la validación, entonces el código quedaría de la siguiente manera:

if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
	die ('Please do not load this page directly. Thanks!');
if ( post_password_required() ) {
	echo 'This post is password protected. Enter the password to view comments.';
	return;
}

El ciclo de los comentarios

Lo primero que se necesita hacer es verificar que existan comentarios en el post de esta manera:

<?php if ( have_comments() ) :
	//Comments here
else :
if ('open' == $post-comment_status) :
	// If comments are open, but there are no comments.
else:
	// comments are closed
endif;
endif;
?>

Opcionalmente podemos mostrar el número de comentarios que hay actualmente, esto lo hacemos así:

<h3 id="comments">
    <?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;
</h3>

Lo siguiente que debemos hacer es imprimir los comentarios existentes, en versiones anteriores lo hacíamos mediante un ciclo for utilizando varias funciones para imprimir los campos de nombre, sitio Web, avatar, comentario, etc. Ahora es mucho más fácil, únicamente es necesario llamar a la función “wp_list_comments” y ésta desplegará toda la información contenida en una lista.

<ol class="commentlist">
	<?php wp_list_comments(); ?>
</ol>

Cuando los comentarios son desplegados podemos ver que contienen varias clases css para su estilizado, las cuales son son:

• comment, trackback, pingback: estas clases sirven para distinguir el tipo de comentario.
• byuser: se agrega si el comentario pertenece a un usuario registrado.
• comment-author-authorname: se agrega para un usuario en específico.
• bypostauthor: está presente en el comentario del autor del post.
• odd and even: son clases que se agregan para los comentarios pares e impares respectivamente.
• thread-odd, thread-even: son clases que se aplican a las respuestas de un comentario, distinguen entre respuestas pares e impares.
• depth-1 se agrega al nivel superior, depth-2 al siguiente nivel, y así sucesivamente.
• Avatar, avatar-32, Photo y avatar-default: estas clases son agregadas al avatar del comentario, donde el 32 es el tamaño del avatar, el cual puede variar.
• children: es agregada a la lista que contiene a las respuestas que se dan a un comentario.

Paginación

Inmediatamente después podemos poner la paginación utilizando las funciones “previous_comments_link” y “next_comments_link” de la siguiente manera:

<div class="navigation">
	<div class="alignleft"><?php previous_comments_link() ?></div>
	<div class="alignright"><?php next_comments_link() ?></div>
</div>

Formulario

Lo que se necesita hacer primero es incluir el JavaScript necesario, el cual utiliza el formulario; de ésta manera WordPress se encargará de posicionar el formulario en el lugar adecuado cuando el usuario responda algún comentario anterior. Para incluir el JavaScript es necesario editar el archivo “header.php” y agregar la siguiente línea antes de la función “wp_head”:

if ( is_singular() ) wp_enqueue_script( 'comment-reply' );

El siguiente paso es agregar al formulario dos campos ocultos, uno de estos tendrá el id del post al cual estamos haciendo el comentario (comment_post_ID) y el otro tendrá el id del comentario que estamos respondiendo (comment_parent), para hacer esto simplemente llamamos a la función “comment_id_fields” de la siguiente manera:

< ?php comment_id_fields(); ?>

Es muy importante que el “textarea”, donde el usuario escribe el comentario, debe tener el id “comment” ya que es requerido para que las respuestas funcionen correctamente. También se requiere que todo el formulario este adentro en un div con id “respond” de esta manera cuando el usuario dé clic sobre el link “reply” el formulario se posicionará en el lugar apropiado y aparecerá justo debajo del comentario.

Ahora, si el usuario tiene desactivado el JavaScript y da clic sobre el link “reply” de un comentario entonces la página se recargará y se posicionará en el formulario, esto sucede gracias a que creamos un div con el id “respond”. En este momento podremos mostrar el mensaje de “Leave a Reply” a quien está respondiendo, de la siguiente manera:

<h3><?php comment_form_title( 'Leave a Reply', 'Leave a Reply to %s' ); ?></h3>

El % es remplazado por el nombre de la persona a la cuál se está respondiendo, hay que tener en cuenta que esto sólo ocurrirá cuando el usuario tenga desactivado el JavaScript.

Cancelar comentario

Una nueva función ha sido agregada en esta versión de WordPress, la cual nos permite cancelar una respuesta a un comentario. Si el usuario tiene activado JavaScript entonces simplemente el formulario se mostrará en su lugar original. Para desplegarlo lo hacemos de la siguiente manera:

<?php cancel_comment_reply_link(); ?>

Conclusiones

Estos son los cambios que se necesitas hacer para que el tema que estás utilizando soporte las nuevas funcionalidades de WordPress 2.7; como puedes ver ahora es más sencillo trabajar con los comentarios. En la siguiente parte de este tutorial voy a mostrar como personalizar los comentarios para utilizar un avatar propio o utilizar otras clases css, por ahora esto es suficiente para que puedas integrar las nuevas funcionalidades.

2 Responses to “Paginación y conversaciones en WordPress 2.7”

  • ilen Mar 12, 2009

    me parece interesante pero aun no esta completo verdad?

    • Crysfel Mar 12, 2009

      Vamos a publicar la segunda parte donde se mostrará como personalizar el html generado, las clases, etc… sigue pendiente.

      saludos

Leave a Reply







Updates

RSS

Subscribe to our feeds to receive updates of our newest posts and free tutorials.

Site search

Maybe we have what you need, would you like to search first?

Donations

Would you buy me a cup of coffee? I am sharing my knowledge and time with you, help this project grow. Thank you!