Publicado em 10 de fevereiro de 2009
Multiplos Loops
Fonte: Blog do Marcelo Mesquita (equipe Web MinC)
Para deixar seu blog com mais cara de site um dica é mudar o modelo de apresentação das notícias nas áreas principais. Ao invés da lista corrida dos últimos posts na home do blog, colunas organizam melhor as notícias além de permitir uma visão mais ampla do conteúdo, por exemplo, você pode dividir seu site em sessões e então listar na home as últimas notícias de cada sessão, deixando a disposição mais equilibrada. Dessa forma também é possível agrupar uma quantidade maior de posts evitando que os visitantes fiquem rolando o site ou procurando o conteúdo através da paginação.
O ‘WP_Query’ é a classe responsável pelos loops no WordPress, com ele podemos criar consultas no site que estarão amparadas por todas as funções presentes no Loop do WordPress facilitando todo o serviço de criação de novas colunas. A forma como ele funciona é semelhante ao ‘query_posts‘, inclusive os argumentos são os mesmos.
Aqui vai um exemplo:
<?php $noticias = new WP_Query(”category_name=noticias&showposts=3″); ?>
<?php if($noticias->have_posts()) : ?>
<div class=”noticias”>
<?php while($noticias->have_posts()) : $noticias->the_post(); ?>
trecho da interface a ser repetido…
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php $artigos = new WP_Query(”category_name=artigosamp;showposts=3″); ?>
<?php if($artigos->have_posts()) : ?>
<div class=”artigos”>
<?php while($artigos->have_posts()) : $artigos->the_post(); ?>
trecho da interface a ser repetido…
<?php endwhile; ?>
</div>
<?php endif; ?>
Notem que utilizando o ‘WP_Query’, as funções ‘have_posts()’ e ‘the_post()’ devem ser precedidas pelo objeto instanciado. Como ‘$noticias’ e ‘$artigos’ do exemplo mostrado acima.
Nesse exemplo eu também adicionei a condicional if para mostrar como alterar a formatação dos posts das diferentes sessões. No programês:
<?php $noticias = consulte_posts(”quantidade_de_posts=3 e categoria_de_nome=noticias”); ?>
<?php se(houverem_posts_em_noticias()) : ?>
<div class=”noticias”>
<?php enquanto(houverem_posts_em_noticias()) : carregue_o_post_da_vez(); ?>
trecho da interface a ser repetido…
<?php verifique_se_ainda_há_posts; ?>
</div>
<?php fim_das_noticias; ?>
O importante é que tenham em mente que as tags abertas entre o ‘if’ e o ‘while’ devem ser fechadas entre o ‘endwhile’ e o ‘endif’, ok.


