Dev (Back & Front)ARTIGO

Como separar contagem de comentários, pingbacks e trackbacks

Hoje veremos algo bastante interessante: 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 artigo poderá ser bem interessante. Os colegas do DigWP escreveram uma matéria sobre o assunto e eu a usei como base para desenvolver este 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 o 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 todos formas de
responder a um só artigo. Felizmente, o WordPress torna esse processo
bem simples. Primeiro, abra o seu arquivo single.php e
utilize a seguinte template tag para chamar o seu template comments.php:

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

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

<?php if (!empty($comments_by_type['comment'])) {<br /> ?><br /><h3 id="comments">Comentários<h3><br /><br /><ol><br /><br /><?php wp_list_comments('type=comment'); ?><br /><br /></ol><br /><br /><?php } if (!empty($comments_by_type['pingback'])) { ?><br /><br /><h3 id="pingbacks">Pingbacks</h3><br /><br /><ol><br /><br /><?php wp_list_comments('type=pingback'); ?><br /><br /></ol><br /><br /><?php } if (!empty($comments_by_type['trackback'])) { ?><br /><br /><h3 id="trackbacks">Trackbacks</h3><br /><br /><ol><br /><br /><?php wp_list_comments('type=trackback'); ?><br /><br /></ol><br /><br /><?php } ?>

Essa 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><br />
<ol><br />
<li>Comentário #1 - Blah blah blah..</li><br />
<li>Comentário #2 - Blah blah 
blah..</li><br />
<li>Comentário #3 - Blah blah 
blah..</li><br />
</ol><br />
<h3 id="pingbacks">Pingbacks</h3><br />
<ol><br />
<li>Pingback #1 - Blah blah blah..</li><br />
<li>Pingback #2 - Blah blah blah..</li><br />
<li>Pingback #3 - Blah blah blah..</li><br />
</ol><br />
<h3 id="trackbacks">Trackbacks</h3><br />
<ol><br />
<li>Trackback #1 - Blah blah blah..</li><br />
<li>Trackback #2 - Blah blah blah..</li><br />
<li>Trackback #3 - Blah blah blah..</li><br />
</ol>

Se por acaso 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 separadamente

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

<?php echo count($wp_query->comments_by_type['comments']); ?><br /><?php echo count($wp_query->comments_by_type['pingback']); ?><br /><?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. Esse tipo de amostra pode ser integrado no código
anterior para nos dar o resultado final:

<?php if (have_comments()) : global $wp_query; ?><br />	<h2 id="comments"><?php comments_number('0 Comentários', '1 Comentário', '% Comentários' ); ?><h2><br /><br />	<?php if (!empty($comments_by_type['comment'])) { ?><br /><br />		<h3 id="comments"><?php echo count($wp_query->comments_by_type['comment']); ?> Comentários<h3><br />		<ol><br />			<?php wp_list_comments('type=comment'); ?><br />		</ol><br /><br />	<?php } ?><br />	<?php if (!empty($comments_by_type['pingback'])) { ?><br /><br />		<h3 id="pingbacks"><?php echo count($wp_query->comments_by_type['pingback']); ?> Pingbacks</h3><br />		<ol><br />			<?php wp_list_comments('type=pingback'); ?><br />		</ol><br /><br />	<?php } ?><br />	<?php if (!empty($comments_by_type['trackback'])) { ?><br /><br />		<h3 id="trackbacks"><?php echo count($wp_query->comments_by_type['trackback']); ?> Trackbacks</h3><br />		<ol><br />			<?php wp_list_comments('type=trackback'); ?><br />		</ol><br /><br />	<?php } ?><br /><br /><?php else : // if there are no comments yet ?><br /><br />	<?php if (comments_open()) : ?><br />		<!-- comments open, no comments --><br />	 <?php else : ?><br />		<!-- comments closed, no comments --><br />	<?php endif; ?><br /><br /><?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 mostrando a quantidade no seu cabeçalho. Esse código é compatível com
WordPress 2.7 ou superior.

Separar comentários apenas dos pingbacks e trackback

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 assim:

<?php if (!empty($comments_by_type['comment'])) { ?>	<br /><h3 id="comments">Comentários<h3><br />	<ol><br />		<?php wp_list_comments('type=comment'); ?><br />	</ol><br /><br /><?php } if (!empty($comments_by_type['pings'])) { ?><br /><br />	<h3 id="trackbacks">Pingbacks &amp; Trackbacks</h3><br />	<ol><br />		<?php wp_list_comments('type=pings'); ?><br />	</ol><br /><br /><?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 combinadas dos pingbacks e trackbacks, vamos acrescentar o
seguinte código ao cabeçalho “Pingbacks & Trackbacks” (similar ao
segundo passo que demos acima):

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

Pronto! Depois de colocar tudo no site certo e trabalhar a
100%, você poderá utilizar a sua folha de estilos CSS para customizar a apresentação dos seus
contadores.

Até a próxima!

é o fundador da Escola Dinheiro. Empreendedor e blogueiro, trabalha em tempo integral na internet e dedica a sua vida à produção e compartilhamento de conteúdos numa rede de projetos que conta já com alguns dos maiores e mais reconhecidos blogs do Brasil e de Portugal, nomeadamente o Escola Dinheiro, Escola WordPress e também a Galeria de Blogs. É estudante de Engenharia Informática em Sistemas de Informação e totalmente viciado em Web2.0. Paulo Faustino é também palestrante e consultor em gestão de campanhas de afiliação, otimização de blogs WordPress e ainda monetização/rentabilização de websites e blogs. No Twitter, siga @escoladinheiro.

Ver perfil