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.

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.