Contenido

Separar comentarios de pingbacks en tus themes de Wordpress 2.7en

8 Nov

+ 14

Hace unos días, vimos que Wordpress 2.7 integra un Loop para comentarios que simplifica la plantilla de comentarios una barbaridad. Esto puede parecer muy sencillo, pero a simple vista te preguntas: ¿Como separo los comentarios de los pingbacks/trackbacks?

if ( have_comments() ) : ?>
<h4 id="comments"><?php comments_number('No Comments', 'One Comment', '% Comments' );?></h4>
<ul class="commentlist">
	<?php wp_list_comments(); ?></ul>
<div class="navigation">
<div class="alignleft"><?php previous_comments_link() ?></div>
<div class="alignright"><?php next_comments_link() ?></div>
</div>
<?php else : // this is displayed if there are no comments so far ?>
	<?php if ('open' == $post->comment_status) :
		// If comments are open, but there are no comments.
	else : // comments are closed
	endif;
endif;

Matt de Sivel.net se lo ha preguntado y ha dado con una solución igual de sencilla que el uso del nuevo Loop.

<?php if ( have_comments() ) : ?>
	<?php if ( ! empty($comments_by_type['comment']) ) : ?>
	<h3 id="comments"><?php comments_number('No Responses', 'One Response', '% Responses' );?> to &#8220;<?php the_title(); ?>&#8221;</h3>

	<ol class="commentlist">
	<?php wp_list_comments('type=comment'); // COMENTARIOS ?> 
	</ol>
	<?php endif; ?>

	<?php if ( ! empty($comments_by_type['pings']) ) : ?>
	<h3 id="pings">Trackbacks/Pingbacks</h3>

	<ol class="commentlist">
	<?php wp_list_comments('type=pings');   // PINGBACKS Y TRACKBACKS ?>
	</ol>
	<?php endif; ?>

	<div class="navigation">
		<div class="alignleft"><?php previous_comments_link() ?></div>
		<div class="alignright"><?php next_comments_link() ?></div>
	</div>
 <?php else : // SI NO HAY COMENTARIOS ?>

	<?php if ('open' == $post->comment_status) : ?>
		<!-- COMENTARIOS ESTAN ABIERTOS, PERO ESTAN VACIOS -->

	<?php else : // SI LOS COMENTARIOS ESTAN CERRADOS ?>
		<!-- If comments are closed. -->
		<p class="nocomments">Comments are closed.</p>

	<?php endif; ?>
<?php endif; ?>

La magia

Como podemos ver el código es realmente sencillo, únicamente hemos de solicitar mediante un parámetro el tipo de comentarios que queremos en cada una de las llamadas a wp_list_comments().

Llamada al template (Actualización)

tikitakfire me avisa de que falta añadir la llamada al template de comentarios comments_template() que en esta versión ha sido modificada y tendremos que llamarla de la siguiente forma :

comments_template('', true);

este código deberá ir en el lugar de tu theme donde antes estaba comments_template(), generalmente en el fichero index.php, single.php y page.php.

Hace días que pienso en separar los comentarios de los pingbacks, visto lo fácil que es ésta semana me pongo y lo hago, gracias por el post :)

Hola Andres, he seguido al pie de la letra esta entrada para poder separar los comentarios de los trackbacks pero no me salen, es más el “Trackbacks/Pingbacks
” ni siquiera se ve. ¿Qué hago?

Salu2.

En efecto, como dice Datzerox, remplazando simplemente el codigo en el theme default, no funciona, dejan de aparecer los comentarios en caso de que existan y no sale nada.

Saludos.

Muchísimas gracias por compartir la información, es justo lo que andaba buscando, me ha servido bastante.

Saludos.

Andrés, @Datzerox, Peter: No funciona porque falta modificar la llamada a la función comments_template() en archivo single.php, tiene que quedar así:

Si no, no se se paran los comentarios por tipo.

uh! o aparece el código…

bueno, para que funcione hay que modificar single.php también, de modo que comments_template() quede así para que funcione:

@tikitakfire: Va… tiene que quedar así: comments_template('', true).

Andrés, por favor edita o eliminar mis commentarios para que quede bien…

Hola

¿No falta una S en la ultima edición del post? ¿Como se escribe, coment o coments?.

Saludos.

Tengo una duda… puedo hacer que los pingbacks tengan un estilo propio mediante la funcion callback¿? Dejándolo asi:

Y en caso de ser así… como qeudaria la funcion en el archivo fuctions.php ¿?

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.