Separando comentários e trackbacks no Wordpress
Filed Under (Blog, Tutoriais, Wordpress) by Cadu de Castro Alves on 09-02-2008
Por padrão, o Wordpress lista comentários e trackbacks juntos, como se fossem a mesma coisa. Muitos designers de temas para Wordpress têm feito modificações no código do Wordpress para mostrá-los separadamente, deixando o site mais organizado e com um visual mais profissional. É exatamente isso que eu ensiná-lo a fazer.
Graças a grande biblioteca de funções disponíveis no Wordpress, é possível manipulá-lo e personalizá-lo da maneira que você quiser, dependendo apenas da profundidade com a qual você conhece a conhece.
O que você precisa?
Primeiramente (e muito importante), é necessário que você possua um site hospedado em seu próprio servidor. Usuários da conta gratuita no Wordpress.com não poderão realizar esta modificação, pois não é permitido o acesso ao código-fonte do Wordpress.
É necessário que você possua instalado em seu servidor a versão 2.0 ou superior do Wordpress, pois esta funcionalidade foi adicionada na versão 2.0. Caso você esteja usando alguma versão inferior a 2.0, atualize a sua instalação do Wordpress.
Você deverá modificar o arquivo comments.php, localizado dentro da pasta de seu tema. Você pode editá-lo através do Painel de Controle do Wordpress (WP Admin > Apresentação > Editar Tema) ou você poderá baixar o arquivo (localizado em /wp-content/themes/seutema/comments.php) e editá-lo em seu editor de códigos favorito.
Conhecimentos básicos de PHP poderão ajudá-lo a compreender melhor o que está sendo feito. A cada código inserido, eu farei uma breve explicação sobre o seu funcionamento. Isso o ajudará a entender o que está sendo feito. Melhor ainda, fará com que você aprenda um pouco sobre o funcionamento de uma das funções da biblioteca do Wordpress. Vamos ao código?
Primeiro passo: separando o joio do trigo
Suponhando que você já esteja com o arquivo comments.php aberto em seu editor, procure o código a seguir:
<?php foreach ($comments as $comment) : ?>
Cole o código abaixo logo após o código anterior:
<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type == 'comment') { ?>
No PHP (que é a linguagem de programação usada no Wordpress), o comando foreach varre os dados de cada linha de um array. Nesse caso, a variável $comments é o nosso array e traz consigo todas as informações referentes a todos os comentários e trackbacks do respectivo post armazenados no banco de dados. A variável $comment traz as informações de cada linha armazenada na variável $comments. $comment também é um array e traz consigo dados como o nome do autor do comentário, o texto do comentário, o tipo de comentário, dentre outras informações. E é exatamente o tipo de comentário que precisamos identificar para separar comentários e trackbacks.
Precisaremos utilizar umas das funções de comentários para identificar o tipo de comentário: a função get_comment_type(). Como o próprio nome diz, ela identifica o tipo de comentário. Para utilizá-la, é necessário que ela seja chamada dentro de um loop. Em nosso caso, o loop é o foreach, mas existem outros tipos de loop.
A variável $comment_type irá armazenar o tipo de comentário presente na variável $comment, cada vez que o loop for executado, para que possamos comparar posteriormente e, consequentemente, filtrar e mostrar somente os comentários.
Para finalizar, vá até o final do arquivo comments.php e localize o código a seguir:
<?php endforeach; /* end for each comment */ ?>
Coloque o código abaixo antes do código acima:
<?php } else { $trackback = true; } ?>
No primeiro código, é uma instrução que fecha o bloco do loop foreach. Essa uma maneira mais legível de fechar um bloco, que também pode ser feita utilizando-se chaves.
No segundo código, o valor true (verdadeiro) é atribuído a variável $trackback. A razão pela qual isso é feito é simples: se o post em questão só possuir comentários, a variável $trackback nunca receberá o valor true. Posteriormente, essa variável será responsável por verificar a existência de trackbacks (e pingbacks) e fará com que o Wordpress gere o código necessário para mostrá-los. Resumindo, se houver trackbacks, o Wordpress irá pegar os dados e mostrar para o visitante. Do contrário, nada será mostrado (ou você poderá mostrar uma mensagem informando ao visitantes que não há trackbacks e pingbacks). É exatamente isso que faremos a seguir.
Segundo passo: Mostrando trackbacks e pingbacks
Para finalizar você precisa escrever o código que irá mostrar os trackbacks e pingbacks para seu visitante. Este mesmo código irá omitir essa informação caso não haja trackbacks e pingbacks. Se você preferir, como foi dito anteriormente, você poderá mostrar uma simples mensagem notificando o visitante que não há trackbacks e pingbacks. Você é quem decide.
Localize o código a seguir:
<?php else : // this is displayed if there are no comments so far ?>
Coloque o código abaixo antes do código acima:
<?php if ($trackback == true) : ?> <h2>Trackbacks</h2> <ul id="trackbacks"%gt;<?php foreach ($comments as $comment) : ?> <?php $comment_type = get_comment_type(); ?> <?php if($comment_type != 'comment') : ?> <?php comment_author_link() ?> <?php endif; ?> <?php endforeach; ?></ul> <?php endif; ?>
Observe que o código acima é muito parecido com o código que foi criado anteriormente para mostrar os comentários. A diferença está na linha que checa o tipo de comentário armazenado na variável $comment_type:
<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type != 'comment') { ?>
Se o valor da variável $comment_type não for comment, mostre os dados, ou seja, mostre os trackbacks e pingbacks.
Se você quiser colocar a lista de trackbacks e pingbacks antes dos comentários, coloque o código anterior logo após o código a seguir:
<h2 id="comments">
<?php comments_number('No Responses', 'One Response', '% Responses' );?> to “< ?php the_title(); ?>”
</h2>
Passo três: salvando o arquivo e checando as mudanças
Para finalizar de vez, salve o arquivo, vá até um dos posts de seu blog e veja os comentários e trackbacks/pingbacks listados separadamente.
Atenção: se você usa o plugin WP-Cache ou similar, será necessário zerar o cache do seu navegador.

Fala Cadu. Teu blog está ótimo. Gostaria de te sugerir um post sobre o Akismet e sua instalação, além de suas vantagens. É o plugin no 1 contra SPAMS e eu por exemplo, não sei porquê.
Acho que outros tem a mesma dúvida.
Abs
Rapaz isso aqui é uma aula para blogueiro nenhum botar defeito.