Contenido

Adapta los comentarios de tu theme a Wordpress 2.7

12 Dic

+ 14

Varios han sido los usuarios que me han solicitado ayuda para migrar los comentarios de su theme al nuevo sistema de Wordpress 2.7.  Hace unas semanas vimos como hacer que dependiendo de la versión aplicara un sistema u otro, ahora veremos como reaprovechar el código para ambas versiones.

Argumento callback

Para ello debemos hacer uso del parámetro callback que le pasaremos a la función wp_list_comments().

// Comentarios
<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
// Pingbacks
<?php wp_list_comments('type=pingback&callback=mytheme_pingback'); ?>

callback, se encarga de pasar el comentario a la función que especificamos como valor y esta función se encargará de mostrar el comentario/pingback con el aspecto que definamos en su interior.

<?php
function mytheme_comment($comment, $args, $depth) {
// Comentario actual
   $GLOBALS['comment'] = $comment; ?>
   /*
   		comment_class() --> Nos permite hacer comentarios tipo zabra.
   		comment_ID() --> ID del comentario actual
   */
   <li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
     <div id="div-comment-<?php comment_ID(); ?>
      <div class="comment-author vcard">
/* Mostramos el avatar del usuario */
         <?php echo get_avatar(); ?>

/* Enlace a la URL del autor del comentario */
         <?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?>
      </div>

/* Controlamos que el comentario esté aprovado */
      <?php if ($comment->comment_approved == '0') : ?>
         <em><?php _e('Your comment is awaiting moderation.') ?></em>
         <br />
      <?php endif; ?>
/* Datos extra de los comentarios */
      <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>
/* Texto del comentario */
      <?php comment_text() ?>
/*Botón de reply, con él podremos responder a un comentario.*/
      <div class="reply">
         <?php comment_reply_link(array_merge( $args, array('add_below' => 'div-comment', 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
      </div>
     </div>
   </li>
<?php } ?>

En este ejemplo, vemos como la función recibe como parámetro el comentario, los argumentos pasados además del callback y la profundidad de comentarios. 

¿Y las versiones anteriores a la 2.7?

Pues si unimos lo que vimos hace unas semanas, simplemente tendremos que comprobar que wp_list_comments() exista:

<?php if (function_exists('wp_list_comments')) : ?>
	<?php wp_list_comments('type=comment&callback=mytheme_comment'); ?>
	<div class="navigation">
	<div class="alignleft"><?php previous_comments_link() ?></div>
	<div class="alignright"><?php next_comments_link() ?></div>
<?php else : ?>
	<?php foreach ($comments as $comment) : ?>
		<?php mytheme_comment($comment);?>
	<?php endforeach; ?>
<?php endif; ?>

Si nos fijamos en el código, la misma función nos sirve para ambas versiones. Así que prueba superada, mañana veremos más cosillas sobre los comentarios de WP 2.7.

Muy buena Andrés.

Soy fiel seguidor de tu blog por aprender más y más de Wordpress y de tus geniales trucos y noticias.

Me encanta este tutorial! Me esta ayudando muchisimo en la creacion de nuevos temas.

Man no sabes cuanto me he cabezeado en buscar esta info !!! justo lo que nesecitaba, despues del cambio a 2.7 esta empezando a diseñar un theme y resulta que me encuentro con el wp_list_comments y quedo :S (ya que normalmente utilizo el theme default para estrucurar las funciones de mis themes);como le doy mi estilo al comment!! encontre una informacion donde me daban una lista de parametros CSS para editarlo pero lo encontre algo “Cuadrado” al no poder modificar todo a tu antojo!, en serio muchisimas gracias !!! Ojala pronto saques un Tuto con alguos examples de como crear buenos estilos de comments.

saludos

Yo matándome en adaptar mi tema cuando ya tenias una guía!
Andrés, la réplica de los comentarios no está funcionando bien.. revisa el code
Acabo de actualizar mi tema y en el blog dejé una guía

Hola:
en realidad, quiero hacer una consulta con la esperanza de que me contestes.
Tengo mi blog en wordpress. Lo administro por intuición más que por conocimiento que es casi nulo.
EN los últimos días veo algunas cosas distintas, que me resultan más fáciles de manejar. Supongo que se debe a la nueva versión. ¿Por qué aparecen esos cambios si yo no la he bajado?
¿Es absolutamente imprescindible bajarlo?
SI es así, dónde encontrar una guía para hacerlo que sea sencilla y en un lenguaje que pueda entender alguien que no sabe informática?
Gracias.

Andrés:
una consulta … como activo el class alt?,para que mis comentarios por ejem tengan distinto fondo, a un bg-img distinto…

de antemano gracias!

@Hugo: TEndrías que usar comment_class(); .

fíjate en el código como lo usa.

@aNieto2k: y como lo uso ? es decir como lo activo?

@Hugo: de esta forma:

 <li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">

Estimado , he instalado la ultima version de wordpress y tengo un problema , no veo lcomo colocar la opcion Reply en los comentarios. Si me pueden indicar como hacerlo se los agradecere mucho.

saludos a todos.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.