Separa y diferencia los trackbacks de los comentarios

Beware: This post was published 9 years ago and its content may be outdated.

Hace unos días ya hablé sobre cómo diferenciar los comentarios de los administradores y hoy toca hablar sobre cómo distinguir los trackbacks de los comentarios.

Seguimos trabajando en el theme Classic de WordPress, que si habéis seguido los tutoriales que he ido escribiendo tendrá:

  • Múltiples sidebars (tutorial)
  • Distinción entre comentarios de administradores (tutorial)
  • Y ahora diferencia entre comentarios y trackbacks.

El objetivo de este tutorial es hacer que en los trackback aparezca el nombre del autor antes del texto del comentario, y que en el lugar donde antes aparecía el nombre del autor ahora indique que se trata de un trackback y no de un comentario “normal”.

Sólo editaremos un único archivo en el tutorial, y será comments.php (de mi querido theme Classic).

Así que abrimos el archivo y nos fijamos en el bucle foreach, que comienza en la línea 14 y acaba en la 21. Todas las modificaciones que haremos estarán entre esas líneas, ya que si no no afectarán a todos los comentarios.

Nos situamos en la línea 17, antes de:

<?php comment_text() ?>

Y sustituimos estas otras líneas:

<?php
$comment_type = get_comment_type();
if($comment_type != 'comment') { echo '<h3>'; comment_author(); echo'</h3>'; }
comment_text();
?>

Explico que hace cada una:

  1. Inicia el código PHP
  2. Crea una nueva variable ($comment_type), que contiene el valor del tipo de comentario (comment, trackback, etc).
  3. Compara el valor de la variable $comment_type (en cada comentario) y si no es igual a comment (lo que significa que hablamos de un Trackback o un Pingback) muestra el nombre del autor.
  4. Muestra el texto del comentario, con lo que hemos cumplido la primera parte del objetivo del tutorial:
    Mostrar el nombre del autor antes del contenido si se trata de un trackback.
  5. Cierra el código PHP.

Después de esto nos queda la segunda parte del tutorial: En el caso de ser un trackback, donde antes se mostraba el nombre del autor ahora se debe mostrar la palabra Trackback.

Sin embargo el theme Classic es algo especial, y nos indica si se trata de un Trackback, un comentario o un Pingback antes de decirnos el nombre del autor, así que modificaremos el código, y en caso de ser Trackback no mostraremos el nombre del autor, sólo el indicador de Trackback.

Nos situamos en la línea 22, y sustituímos:

<?php _e('by'); ?> <?php comment_author_link() ?>

Por este otro código:

<?php if($comment_type == 'comment') { _e('by'); echo ' '; comment_author_link(); } ?>

¿De qué se compone este código?

Pues básicamente es otra comparación, sólo que esta ejecuta el código sólo si el valor de la variable $comment_type es igual a comment, es decir, sólo ejecuta el código en los comentarios “normales”.

Si el valor es igual, nos muestra el nombre del autor.

Así de sencillo es indicar si se trata de Trackbacks o no.

Descargas

Como en otros tutoriales, podéis descargar el theme Classic modificado desde aquí.