En este pequeño tutorial enseñare como separar los Trackbacks de los Comentarios además de como crear un contador independiente para cada uno de ellos. Yo lo he hecho con el theme default de Wordpress, pero es perfectamente aplicable a cualquier otro theme simplemente siguiendo los pasos.

¡Empezamos!

1º Filtramos los comentarios para que no muestren Trackbacks.

Para ello buscamos <?php foreach ($comments as $comment) : ?> en el archivo comments.php y añadimos justo debajo o siguiente:

Código PHP (Copiar):
  1. <?php $comment_type = get_comment_type(); ?>
  2. <?php if($comment_type == ‘comment’) { ?>

Luego tenemos que buscar <?php endforeach; /* end for each comment */ ?> y añadir justo antes <?php } /* End of is_comment statement */ ?>

Con esto ya hemos conseguido que no se muestren los Trackbacks.

Ahora incluimos un contador para los comentarios.

La función predeterminada de Wordpress para contar el número de comentarios es <?php comments_number(); ?>. El problema de esta función es que cuenta los comentarios y los trackbacks, por lo que no nos sirve.

Entonces tendremos que crear nuestro propio contador, para ellos incluimos el siguiente código en donde queramos que se muestre el número de comentarios (sin contar los trackbacks):

Código PHP (Copiar):
  1. <?php
  2.     $ccount = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$id' AND comment_approved = '1' AND comment_type = ''");
  3. ?>
  4. <h3><?php if ($ccount == '0') { ?>Sin comentarios<?php } elseif ($ccount == '1') { ?>Un comentario<?php } else { ?><?php echo $ccount ?> Comentarios<?php } ?>.</h3>

Finalmente mostramos los Trackbaks con su respectivo contador.

Para ello, simplemente tenemos que añadir el siguiente código antes de <?php else : // this is displayed if there are no comments so far ?>

Código PHP (Copiar):
  1. <?php
  2.     $tcount = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$id' AND comment_type != ''");
  3. ?>
  4. <?php if ($tcount != '0') { ?>
  5. <h3><?php if ($tcount == '1') { ?>Una referencia.<?php } elseif ($tcount> 1) { ?> y <?php echo $tcount ?> referencias.<?php } else { echo ".";} ?></h3>
  6. <ol id="trackbacks">
  7.     <?php foreach ($comments as $comment) : ?>
  8.     <?php $comment_type = get_comment_type(); ?>
  9.     <?php if($comment_type != 'comment') { ?>
  10.     <li><?php comment_author_link() ?> <em>(<?php the_time('d'); ?> de <?php the_time('F'); ?> del <?php the_time('Y'); ?> a las <?php the_time('g:i a'); ?>)</em></li>
  11.     <?php } ?>
  12.     <?php endforeach; ?>
  13. </ol>
  14. <?php } ?>

Según el código anterior los Trackbacks solo se mostrarán cuando halla alguno, en caso de que una noticia no tenga ninguna referencia no se mostrará nada. Esto se puede modificar con un poco de PHP sencillo.

Si queréis ver como queda este código lo podéis ver en este mismo blog. Por ejemplo en esta noticia que tiene trackbacks y comentarios.

 

Entradas relacionadas

Un comentario

adRy0neAugust 16th, 2008 at 3:49 pm

lo probaré… ya que el metodo que usé no funcionabaa!!

Deja un comentario