Entendendo como funciona o loop no WordPress


Bom dia a todos. Bem vindos à mais um artigo da coluna de WordPress.org do Cat Geek. Hoje iremos estudar um pouco sobre o loop do WordPress.

O que é o Loop?

Segundo o Codex do WordPress, "o Loop é usado pelo WordPress para exibir cada uma de suas postagens. Usando o Loop, o WordPress processa cada uma das postagens a serem exibidas na página atual e formata-as de acordo com critérios específicos. Qualquer código HTML ou PHP colocado no Loop será repetido em cada postagem. Quando a documentação do WordPress diz "Essa tag deve estar dentro do Loop", como no caso específico de Tags de Modelo ou plugins, a tag será repetida para cada postagem".


O loop é usado pelo wordpress para exibir os posts no blog. Ele pode ser configurado para exibir em todas as paginas o mesmo loop, como pode exibir o conteúdo de maneira diferente em cada página.


Normalmente, o loop exibe as Template Tags:


Título do post - através da tag <?php the_title()?>
Hora em que o post foi publicado - através da tag <?php the_time()?>
Autor do post - através da tag <?php the_author ?>
Categoria em que o post foi incluido - através da tag <?php the_category?>
Resumo do post - através da tag <?php the_excpert?>
Conteúdo do post - através da tag <?php the_content?>


O loop começa com a seguinte linha de código:



<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
E termina assim:


<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
Entendendo as Template Tags no loop

Entre os códigos acima, é inserido o conteúdo do post. Um exemplo de como devem ser colocadas as Template Tags que exibem a o titulo, a data e o autor do post - the_title, the_time, the_author:


<h2 id="post-<?php the_ID(); ?>">
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
<?php the_title(); ?></a></h2>
<small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

A Template Tag the_content, normalmente é inserida no loop dentro de divs. Quando ela é chamada, exibe o conteúdo do post:


<div class="entry">
<?php the_content(); ?>
</div>

Da mesma maneira que a Template Tag the_content, podemos usar a the_excpert, que mostra um resumo do post.


<div class="entry">
<?php the_excpert(); ?>
</div>

Alguns templates /temas wordpress estilo magazine (revista - jornal), utilizam as duas Template Tags, usando a the_excpert antes da the_content, para destacar um comentário adicional, ou um pequeno resumo do artigo postado.


<div class="entry">
<?php the_excpert ?><br/><?php the_content(); ?>
</div>

Exemplos de loop

Um exemplo de loop simples, mostrando as Template Tags vistas até agora, seria (excluindo a tag the_excpert):


 <!-- Começa o Loop. -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

 <!-- Mostra o título como um link para o link permanente do post -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

 <!-- Mostra a data e um link para outros posts do mesmo autor. -->
 <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>

 <!-- Mostra o conteúdo do post em uma DIV -->
 <div class="entry">
   <?php the_content(); ?>
 </div>

 <!-- Mostra uma lista de categorias do post separadas por vírgula -->
 <p class="postmetadata">Posted in <?php the_category(', '); ?></p>
 </div> <!-- Fecha a primeira DIV -->

 <!-- Termina o Loop (mas repare no "else" - veja próxima linha) -->
 <?php endwhile; else: ?>

 <!-- O primeiro IF testou para ver se havia posts a serem mostrados -->
 <!-- Este ELSE diz ao WordPress o que fazer se não houver nenhum -->
 <p>Desculpe, não achamos o conteúdo que procurava.</p>

 <!-- Término verdadeiro do Loop -->
 <?php endif; ?>
Sempre que você utilizar códigos PHP, devem estar dentro das tags <?php ?>. Sempre que utilizar códigos HTML, deve estar fora das mesmas tags.

O exemplo abaixo, conta com a tag the_excpert:


<!-- Começa o Loop. -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

 <!-- Mostra o título como um link para o link permanente do post -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

 <!-- Mostra a data e um link para outros posts do mesmo autor. -->
 <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>

 <!-- Mostra um resumo e o conteúdo do post em uma DIV -->
 <div class="entry">
 <p> <?php the_excpert ?> </p><p> <?php the_content(); ?></p>
 </div>

 <!-- Mostra uma lista de categorias do post separadas por vírgula -->
 <p class="postmetadata">Posted in <?php the_category(', '); ?></p>
 </div> <!-- Fecha a primeira DIV -->

 <!-- Termina o Loop (mas repare no "else" - veja próxima linha) -->
 <?php endwhile; else: ?>

 <!-- O primeiro IF testou para ver se havia posts a serem mostrados -->
 <!-- Este ELSE diz ao WordPress o que fazer se não houver nenhum -->
 <p>Desculpe, não achamos o conteúdo que procurava.</p>

 <!-- Término verdadeiro do Loop -->
 <?php endif; ?>
Abaixo do conteúdo (antes da taga <?php endwhile; else;?>), você pode inserir informações sobre o post, como as categorias, data e as informações comentário. Se você estiver logado, pode acrescentar a tag edit_post_link(), que permite editar o post.


<p class="postmetadata">
Posted in <?php the_category(', ') ?> 
<strong>|</strong>
<?php edit_post_link('Edit','','<strong>|</strong>'); ?>  
<?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p>
Para terminar o loop, é necessário colocar as tags:


<?php endwhile; else: ?>
<?php endif; ?>
Abaixo dessas tags, você pode colocar links de navegação para páginas anteriores e posteriores à que o usuário está navegando.


 <div class="navigation">
 <div class="alignleft"><?php previous_posts_link('&laquo; Artigos anteriores') ?></div>
 <div class="alignright"><?php next_posts_link('Próximos artigos &raquo;','') ?></div>
 </div>
Você pode criar loop's diferentes para cada categoria do seu blog, trabalhando o código e usando um template de página (abordaremos como criar templates de página em artigos posteriores).


<!-- Começa o Loop. -->
 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

 <!-- O código a seguir testa se o post atual pertence à categoria 3 -->
 <!-- Se pertence, a classe css da DIV será definida como "post-cat-three". -->
 <!-- Se não, a classe da DIV será definida como "post". -->
 <?php if ( in_category('3') ) { ?>
           <div class="post-cat-three">
 <?php } else { ?>
           <div class="post">
 <?php } ?>

 <!-- Mostra o título como um link para o link permanente do post -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

 <!-- Mostra a data e um link para outros posts do mesmo autor. -->
 <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small>

 <!-- Mostra o conteúdo do post em uma DIV -->
 <div class="entry">
   <?php the_content(); ?>
 </div>

 <!-- Mostra uma lista de categorias do post separadas por vírgula -->
 <p class="postmetadata">Posted in <?php the_category(', '); ?></p>
 </div> <!-- Fecha a primeira DIV -->

 <!-- Termina o Loop (mas repare no "else" - veja próxima linha) -->
 <?php endwhile; else: ?>

 <!-- O primeiro IF testou para ver se havia posts a serem mostrados -->
 <!-- Este ELSE diz ao WordPress o que fazer se não houver nenhum -->
 <p>Sorry, no posts matched your criteria.</p>

 <!-- Término verdadeiro do Loop -->
 <?php endif; ?>
Uma maneira interessante de trabalhar o loop em seu template / tema, é usar a tag the_excpert para criar um  resumo do artigo na home do seu blog e nas páginas de categorias. Na single.php (responsável por exibir o conteúdo completo do post), você usa a tag the_content. Desta maneira, além de proporcionar um visual mais limpo, evita problemas com conteúdo duplicado e não é punido pelo Google.

Nos próximos artigos iremos ver outras funções interessantes do WordPress. Fique ligado.

Entendeu o loop? Trabalha o loop de alguma maneira que não foi abordada aqui? Comente abaixo.
Share this article :
 

Postar um comentário