Hoje trazemos-lhe um tutorial bem interessante sobre como separar as contagens de comentários, pingbacks e trackbacks no seu blog. Para todos aqueles que gostam de fazer show-off de estatísticas nos seus blogs, este tutorial poderá ser bem interessante. Os colegas do DigWP escreveram uma matéria muito interessante sobre o assunto, a qual utilizamos como base de desenvolvimento desse artigo.

A ideia é basicamente mostrar os seus contadores de comentários, pingbacks e trackbacks em separado, embora seja possível também separar apenas o contador de comentários e deixar os outros dois acumulando contagem em conjunto. Vamos ver então como você pode fazer isso no seu blog WordPress e facilitar a leitura e entendimento do seu blog aos seus leitores.

SEPARAR COMENTÁRIOS, PINGBACKS E TRACKBACKS

A primeira coisa a fazer é separar os diferentes tipos de resposta a artigos: comentários, pingbacks e trackbacks, são tudo formas de responder a um só artigo. Felizmente, o WordPress torna esse processo bem simples. Primeiro, abra o seu ficheiro single.php e utilize a seguinte template tag para chamar o seu template comments.php:

comments_template('/comments.php',true);

Este código irá permitir ao WordPress separar e contar os diferentes tipos de respostas, baseando-se no objecto $wp_query. Agora, vamos separar os comentários, pingbacks, e trackbacks. No seu ficheiro comments.php, utilize o seguinte código como sendo o seu loop de comentários:

<?php if (!empty($comments_by_type['comment'])) { ?>

<h3 id=”comments”>Comentários<h3>
<ol>
<?php wp_list_comments(‘type=comment’); ?>
</ol>

<?php } if (!empty($comments_by_type[‘pingback’])) { ?>

<h3 id=”pingbacks”>Pingbacks</h3>
<ol>
<?php wp_list_comments(‘type=pingback’); ?>
</ol>

<?php } if (!empty($comments_by_type[‘trackback’])) { ?>

<h3 id=”trackbacks”>Trackbacks</h3>
<ol>
<?php wp_list_comments(‘type=trackback’); ?>
</ol>

<?php } ?>

Esta porção de código simétrico irá mostrar os seus conteúdos da seguinte forma, assumindo que o seu artigo irá receber pelo menos os três tipos de respostas em questão:

<h3 id="comments">Comentários<h3>
<ol>
<li>Comentário #1 - Blah blah blah..</li>
<li>
Comentário #2 - Blah blah blah..</li>
<li>
Comentário #3 - Blah blah blah..</li>
</ol>
<h3 id="pingbacks">Pingbacks</h3>
<ol>
<li>Pingback #1 - Blah blah blah..</li>
<li>Pingback #2 - Blah blah blah..</li>
<li>Pingback #3 - Blah blah blah..</li>
</ol>
<h3 id="trackbacks">Trackbacks</h3>
<ol>
<li>Trackback #1 - Blah blah blah..</li>
<li>Trackback #2 - Blah blah blah..</li>
<li>Trackback #3 - Blah blah blah..</li>
</ol>

Se por ventura o seu artigo não receber um dos tipos de respostas em questão, esse tipo irá sumir e deixar o seu layout bonito e elegante na mesma.

MOSTRAR CONTADORES DE RESPOSTAS EM SEPARADO

Agora, para mostrar o contador para cada uma dessas respostas, chamamos o objecto $wp_query para puxar a informação e mostra-la para nós:

<?php echo count($wp_query->comments_by_type['comments']); ?>
<?php echo count($wp_query->comments_by_type['pingback']); ?>
<?php echo count($wp_query->comments_by_type['trackback']); ?>

Cada uma dessas linhas mostra um número que corresponde ao tipo de resposta em causa. Este tipo de amostra pode ser integrado no código anterior para nos dar o resultado final:

<?php if (have_comments()) : global $wp_query; ?>

	<h2 id="comments"><?php comments_number('0 Comentários', '1 Comentário', '% Comentários' ); ?><h2>

	<?php if (!empty($comments_by_type['comment'])) { ?>

		<h3 id="comments"><?php echo count($wp_query->comments_by_type['comment']); ?> Comentários<h3>
		<ol>
			<?php wp_list_comments('type=comment'); ?>
		</ol>

	<?php } ?>
	<?php if (!empty($comments_by_type['pingback'])) { ?>

		<h3 id="pingbacks"><?php echo count($wp_query->comments_by_type['pingback']); ?> Pingbacks</h3>
		<ol>
			<?php wp_list_comments('type=pingback'); ?>
		</ol>

	<?php } ?>
	<?php if (!empty($comments_by_type['trackback'])) { ?>

		<h3 id="trackbacks"><?php echo count($wp_query->comments_by_type['trackback']); ?> Trackbacks</h3>
		<ol>
			<?php wp_list_comments('type=trackback'); ?>
		</ol>

	<?php } ?>

<?php else : // if there are no comments yet ?>

	<?php if (comments_open()) : ?>
		<!-- comments open, no comments -->
	 <?php else : ?>
		<!-- comments closed, no comments -->
	<?php endif; ?>

<?php endif; ?>

Usando esse código como o seu loop de comentários, o código irá separar os comentários, pingbacks, e trackbacks, com cada um deles a mostrar a quantidade no seu cabeçalho. Esse código é compatível com WordPress 2.7 ou superior.

SEPARAR COMENTÁRIOS APENAS DOS PINGBACKS E TRACKBACKS

Alternativamente, você pode separar os seus comentários e agregar a contagem dos seus pingbacks e trackbacks. Para conseguir fazer isso, modificamos o loop de comentários (do primeiro passo) para algo deste género:

<?php if (!empty($comments_by_type['comment'])) { ?>

	<h3 id="comments">Comentários<h3>
	<ol>
		<?php wp_list_comments('type=comment'); ?>
	</ol>

<?php } if (!empty($comments_by_type['pings'])) { ?>

	<h3 id="trackbacks">Pingbacks &amp; Trackbacks</h3>
	<ol>
		<?php wp_list_comments('type=pings'); ?>
	</ol>

<?php } ?>

Agrupar os pingbacks e trackbacks é fácil graças ao parâmetro “pings” para o segundo loop wp_list_comments. Depois, para mostrar as contagens combinados dos pingbacks e trackbacks, vamos acrescentar o seguinte código ao cabeçalho “Pingbacks & Trackbacks” (similar ao segundo passo que demos em cima):

<?php echo count($wp_query->comments_by_type['pings']); ?>

Está tudo! Depois de colocar tudo no sítio certo e a trabalhar a 100%, poderá utilizar a sua folha de estilos CSS para customizar a apresentação dos seus contadores.

Bons truques! Até Já!