Skip to content

Últimos comentarios

Acabo de añadir a la derecha un listado de los últimos comentarios realizados. Es sorprendente que WordPress, con lo avanzado que es, no traiga una opción por defecto, pero así nos permitimos el lujo de manosear un poco.

Me basé en el código del WordPress Wiki y en el viejo Ted para hacer esto:

function last_comments($n, $start, $pattern, $separator, $end) {
   global $tableposts, $tablecomments;
  $query = ("SELECT post_title, comment_author, comment_date, comment_id
             FROM $tableposts, $tablecomments 
             WHERE $tableposts.ID = $tablecomments.comment_post_ID 
             ORDER BY $tablecomments.comment_date DESC
             LIMIT $n");
  $result = mysql_query($query);
  
  echo $start; $i = 0;
  
  while ($data = mysql_fetch_row($result)) {
  
   if ($i > 0) echo $separator;
  
   $variables = array('%POST%', '%COMAUTOR%', '%COMFECHA%', '%COMID%');
   $valores = array($data[0], $data[1], $data[2], $data[3]);
   echo str_replace($variables, $valores, $pattern);
    
    ++$i;
  }
  
  echo $end;
}

Básicamente, lo que hace es una consulta a la Base de Datos y va obteniendo un array con los valores solicitados de cada comentario. A la función se le pasa principalmente una variable, $pattern, que será impresa por cada comentario que se recorra. En $pattern escribimos el HTML deseado para cada uno y empleamos los valores %POST%, %COMAUTOR%, etc, para simbolizar cada uno de los datos que se sustituirán. Obviamente, $n especifica cuántos comentarios se desean, $start y $end las cadenas a imprimir antes y después del conjunto de comentarios, y $separator la cadena entre cada comentario. Este código puede ponerse, por ejemplo, en /wp-includes/comment-functions.php .

Para llamar a esta función, nada más sencillo. Así la llamo yo desde sidebar.php:

<div id="ultcomentarios">
<h2>Quién habla</h2>
<?php last_comments(5, '<ul>', '<li><cite>%COMAUTOR%</cite> en 
   <a href="'.get_bloginfo('url').'"?name=%POST%">%POST%</a></li>', '', '</ul>'); ?>
</div>

Que me devuelve una bonita lista desordenada como la que veis. Si tenéis alguna duda, preguntad que para eso estoy.