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 & 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á!