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('« Artigos anteriores') ?></div> <div class="alignright"><?php next_posts_link('Próximos artigos »','') ?></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.
Postar um comentário