Personalizando O Loop
Após entender como O Loop funciona, já podemos começar a brincar com o WordPress controlando o conteúdo a ser caregado 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; re-ordenar 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.
