WordPress

Inscreva-se em nosso canal no Youtube Daviwp

Personalizando o Loop

20/04/2011 WordPress (0) comentário

Para quem desenvolve em WordPress o mais importante é entender como funciona o loop, a estrutura responsável por carregar os posts no WordPress. Ele funciona em todos os templates do tema, por isso é tão importante. O que alimenta a consulta do loop são os parâmetros passados no endereço do site, carregados cronologicamente por padrão.

Por exemplo: Ao acessar o endereço https://www.dominio.com/?cat=1, estaremos passando para o loop cuja categoria é igual a 1, assim, o loop irá carregar os posts que estejam dentro dessa categoria apenas.

Todos os resultados obtidos com a consulta são armazenados em um array chamado $posts e a cada volta do loop a chave do array é incrementada. Dessa forma, precisamos somente de uma estrutura de repetição que monte o conteúdo de cada post dentro da nossa interface. Para facilitar ainda mais, o WordPress disponibiliza duas funções que fazem quase todo o trabalho para nós, são elas:

have_posts(), que verifica se ainda existem posts no array; e
the_post(), que carrega os dados do post da vez.

A estrutura mais utilizada nos temas do WordPress é:

<?php while(have_posts()) : the_post(); ?>
trecho da interface a ser repetido...
 <?php endwhile; ?>

Traduzindo para o programês, ficaria assim:

<?php enquanto(houverem_posts()) : carregue_o_post_da_vez(); ?>
trecho da interface a ser repetido...
<?php verifique_se_ainda_há_posts; ?>

Dentro do loop estarão disponíveis os atributos do post da vez, esses atributos podem ser acessados utilizando as funções the_title(), the_permalink(), the_content(), para citar algumas. Sabendo disso, para montar um template que mostre o título, o autor e a data de publicação de um post precisaríamos simplesmente adicionar as respectivas funções nos locais apropriados. Segue mais um exemplo:

<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p class="data"><?php the_time(); ?></p>
<p class="autor"><?php the_author(); ?></p>
<?php endwhile; ?>

Personalizando

Após entender como o Loop funciona, já podemos começar a brincar com o WordPress controlando o conteúdo a ser carregado ou filtrado. Mais uma vez o WordPress facilita a vida dos desenvolvedores disponibilizando a função query_posts().

Essa função permite criar parâmetros de consulta ou adicionar novos parâmetros aos passados via endereço do navegador, dessa forma você pode excluir uma categoria da pesquisa, reordenar os posts, limitar a quantidade de resultados, entre outras coisas.

O funcionamento do query_posts é simples, apenas adicione a função ‘query_posts(‘args’)’ antes da função ‘have_posts()’ substituindo o args pelos argumentos desejados à sua consulta. Dessa forma o ‘have_posts()’ irá ignorar os parâmetros passados pelo endereço e fará uma consulta baseada nos dados informados. Por exemplo, se você quer listar três posts aleatórios da categoria ‘destaques’, o script seria assim:

<?php query_posts("&orderby=rand&showposts=3&category_name=destaques"); ?>
<?php while(have_posts()) : ?>
trecho da interface a ser repetido...
<?php endwhile; ?>

Note que cada atributo é separado pelo & assim como nos parâmetros passados via url. Dessa forma os desenvolvedores se sentem mais familiarizados com o código e não precisam ficar decorando a ordem dos atributos nem se preocupar em anular os que não serão usados.

Caso a sua intenção seja apenas filtrar os resultados de uma busca, adicione a variável ‘$query_string’ à sua função query_posts, dessa forma o WordPress mescla os seus argumentos com os argumentos da página. Essa variável é muito importante quando você pretende manter a navegabilidade, como é o caso dos resultados de uma pesquisa ou do conteúdo da página inicial do site. Para exemplificar, segue como seria o script para retirar uma categoria dos resultados de uma pesquisa:

<?php query_posts("{$query_string}&cat=-3"); ?>
<?php while(have_posts()) : ?>
trecho da interface a ser repetido...
<?php endwhile; ?>

Esse script deve ficar no arquivo search.php, então os posts encontrados na categoria 3 não aparecerão nos resultados das pesquisas e a paginação dos resultados continuará funcionando.

daviwp

Meu nome é Davi Alves desenvolvedor web e WordPress developer, residente de Belo Horizonte, sou um dos organizadores do WordCamp evento oficial do WordPress em BH e co-fundador do Belo Horizonte WordPress Group juntamente com o fundador Mateus Neves, sou articulista de alguns sites, e fundador do daviwp.com, aqui compartilho conhecimentos para toda galera aficionada em WordPress.