26
Jun 08

Contador de trackbacks en Wordpress

Guardado bajo la categoría: PHP, Wordpress

Una función que Wordpress no trae por defecto es la de contar los trackbacks, y mientras armaba la plantilla para este weblog y separaba los comentarios de las respuestas generadas por otros blogs me di cuenta que el valor que devolvia el contador incluia el número de comentarios y el número de trackbacks.

Después de pasear un rato por Google buscando la forma de separar estos dos valores, encontre el modelo de consulta a la base de datos de Wordpress para obtener ambos resultados.

  1. SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$id' AND comment_approved = '1' AND comment_type != ''

Y luego con un simple código PHP podemos obtener, por un lado el número de comentarios y por otro el número de trackbacks que tiene nuestro post:

Número de Comentarios:

  1. <?php
  2.  //contador de trackbacks
  3.  $comentarios = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$id' AND comment_approved = '1' AND comment_type = ''"); //consultamos la base de datos
  4.  if ($comentarios == '0') { //si no hay comentarios
  5.   echo('<h3>Esta entrada no tiene comentarios</h3>');
  6.  }
  7.  elseif ($comentarios == '1') { //si hay 1 comentario
  8.   echo('<h3>Esta entrada tiene un comentario</h3>');
  9.  }
  10.  else { //si hay mas de 1 comentarios
  11.   echo('<h3>Esta entrada tiene '.$comentarios.' comentarios</h3>');
  12.  }
  13.  ?>

Número de Trackbacks

  1. <?php
  2.  //contador de trackbacks
  3.  $trackbacks = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = '$id' AND comment_approved = '1' AND comment_type != ''"); //consultamos la base de datos
  4.  if ($trackbacks == '0') { //si no hay trackbacks
  5.   echo('<h3>Esta entrada no tiene trackbacks</h3>');
  6.  }
  7.  elseif ($trackbacks == '1') { //si hay 1 trackback
  8.   echo('<h3>Esta entrada tiene un trackback</h3>');
  9.  }
  10.  else { //si hay mas de 1 trackback
  11.   echo('<h3>Esta entrada tiene '.$trackbacks.' trackbacks</h3>');
  12.  }
  13.  ?>

Ambos códigos los incluimos dentro del archivo comments.php, dentro de la carpeta donde enta ubicada nuestro theme, en el lugar donde queremos que aparezca el mensaje.

Tags: , 3