Separar comentarios de trackbacks WP 2.8
Hola os explicare como separar los comentarios de los trackbacks y que se muestre correctamente el numero de comentarios en las entradas ya que normalmente las entradas que nos explican como hacerlo no dicen que si estamos en una entrada el sistema cuenta tanto los comentarios como los trackbacks, es decir si tenemos 3 comentarios y 2 trackbacks nos dira que tenemos 5 comentarios cosa que a mi personalmente no me gusta por que si tengo un trackback de una entrada pero no tengo comentarios creo que tengo un comentario cuando en realidad es un trackback.
Antes de empezar tengo que decir que el codigo esta sacado del tema Simple Balance cuyo codigo me lo paso muy amablemente Angeles. Como podreis ver esta un poco cambiado respecto al original pero en esencia es el mismo, lo unico es que esta adaptado para traducirlo usando el poedit esta sacado de en parte de Simple balance traducido por carrero y otra parte de theme lightword donde solucionaba la incompatibilidad.
Ahora como siempre digo y dire tenemos que hacer una copia de seguridad de nuestro diseño. Aparte que si podemos tener el WordPress instalado en nuestro ordenador mejor asi hacemos nuestras pruebas sin que el visitante de nuestro sitio sepa que estamos haciendo, creo que tengo otra idea para otra entrada!! aqui os explico como instalar un servidor en nuestro windows
Necesitaremos:
- Un editor para los archivos php, yo en mi caso uso el Dreamweaver.
- Archivo Functions.php de nuestro tema, en caso de no tenerlo crearemos un archivo php con el nombre Functions.
- Archivo comments.php donde modificaremos algunas partes.
- Creacion del archivo addcomment.php
- Y archivos como el Index.php, Single.php, etc... Dependiendo del tema.
- Claro que tambien necesitaremos tiempo, jeje
AVISO!!
Todos los archivos no llevan diseño CSS añadido, asi que tendreis que añadirlo para que coincida con el diseño CSS de vuestro tema.Algunos si lo llevan!!!
Algunos codigos tienen una palabra ds que es la que uso para traducir el tema mio asi que si vuestro tema se puede traducir con el poedit tambien lo traducira, lo unico que tendreis que cambiar la palabra por la palabra que el creador de vuestro tema halla elegido.
Disecciono los archivos para dar pequeñas explicaciones.
Empezaremos con el archivo Functions.php que tendremos en nuestra carpeta del tema que queremos modificar.
Donde introduciremos el siguiente codigo:
La primera parte es la seccion de los comentarios y la segunda es el contador!!
function mytheme_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment; ?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID() ?>">
<div id="div-comment-<?php comment_ID(); ?>">
<div class="left-comment-author">
<?php echo get_avatar(get_comment_author_email(), '52', 'http://img18.imageshack.us/img18/9925/avatarfrk.png'); ?>
<div class="clear"></div>
<span class="commentAuthor"><?php comment_author_link() ?></span><br />
<small class="commentmetadata"><a href="#comment-<?php comment_ID() ?>" title=""><?php comment_date(__('F jS, Y','ds')) ?></a> <?php edit_comment_link(__('Edit','ds'), '[ ',' ]'); ?></small>
<?php if ($comment->comment_approved == '0') : ?>
<small><em><?php _e('Your comment is awaiting moderation.', 'ds') ; ?></em></small><br />
<?php endif; ?>
</div>
<div class="right-comment-author">
<?php comment_text() ?>
<?php echo comment_reply_link(array('before' => '<div class="reply">', 'after' => '</div>', 'depth' => $depth, 'max_depth' => $args['max_depth'] )); ?>
</div>
<div class="clear"></div>
<hr class="sep" />
</div>
<?php
}
/*
Este codigo examina si son pingbacks trackbacks o comentarios y los muestra el numero correcto segun sean
Ping/Track/Comment Count
Source URI: http://txfx.net/code/wordpress/ping-track-comment-count/
Description: Provides functions that return or display the number of trackbacks, pingbacks, comments or combined pings recieved by a given post. Other Authors: Mark Jaquith, Chris J. Davis, Scott "Skippy" Merrill
*/
function get_comment_type_count($type='all', $post_id = 0) {
global $cjd_comment_count_cache, $id, $post;
if ( !$post_id )
$post_id = $post->ID;
if ( !$post_id )
return;
if ( !isset($cjd_comment_count_cache[$post_id]) ) {
$p = get_post($post_id);
$p = array($p);
fb_update_comment_type_cache($p);
}
if ( $type == 'pingback' || $type == 'trackback' || $type == 'comment' )
return $cjd_comment_count_cache[$post_id][$type];
elseif ( $type == 'ping' )
return $cjd_comment_count_cache[$post_id]['pingback'] + $cjd_comment_count_cache[$post_id]['trackback'];
else
return array_sum((array) $cjd_comment_count_cache[$post_id]);
}
function comment_type_count($type = 'all', $post_id = 0) {
echo get_comment_type_count($type, $post_id);
}
if ( !function_exists('fb_update_comment_type_cache') ) {
function fb_update_comment_type_cache($queried_posts) {
global $cjd_comment_count_cache, $wpdb;
if ( !$queried_posts )
return $queried_posts;
foreach ( (array) $queried_posts as $post )
if ( !isset($cjd_comment_count_cache[$post->ID]) )
$post_id_list[] = $post->ID;
if ( $post_id_list ) {
$post_id_list = implode(',', $post_id_list);
foreach ( array('', 'pingback', 'trackback') as $type ) {
$counts = $wpdb->get_results("SELECT ID, COUNT( comment_ID ) AS ccount
FROM $wpdb->posts
LEFT JOIN $wpdb->comments ON ( comment_post_ID = ID AND comment_approved = '1' AND comment_type='$type' )
WHERE (post_status = 'publish' OR (post_status = 'inherit' AND post_type = 'attachment')) AND ID IN ($post_id_list)
GROUP BY ID");
if ( $counts ) {
if ( '' == $type )
$type = 'comment';
foreach ( $counts as $count )
$cjd_comment_count_cache[$count->ID][$type] = $count->ccount;
}
}
}
return $queried_posts;
}
}
add_filter('the_posts', 'fb_update_comment_type_cache');
?>


Añade tu comentario