Paginación y conversaciones en WordPress 2.7
Mar 09, 2009 | Español | By Crysfel | 2 Comments | Read in EnglishWordPress 2.7 integra la posibilidad de agregar conversaciones en los comentarios, además nos permite paginar los comentarios de una manera muy sencilla.
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 “<?php the_title(); ?>”
</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.





Commercial ExtJs and Sencha Touch Themes


me parece interesante pero aun no esta completo verdad?