Início » Entendendo o Loop do WordPress
29/04/2011 WordPress (14) comentários
1. O que é o Loop do WordPress?
O Loop é um conjunto de comandos em PHP (linguagem em que o WordPress foi construído) que tem como função buscar um ou mais posts na base de dados e possibilitar que as informações sobre o post sejam mostradas em uma página web. Essas informações podem ser o título do post, seu conteúdo, o autor, a data, e todas as demais informações de um post.
Por essa definição já dá pra ter uma ideia da importância do Loop, correto?
A seguir, os comandos que o compõem:
[Aqui vai o código dentro do loop]
[O que fazer ser não há posts?]
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> [Aqui vai o código dentro do loop] <?php endwhile; ?> <?php else : ?> [O que fazer ser não há posts?] <?php endif; ?>
2. Onde está localizado o Loop?
Se você quiser ver o loop no seu blog, acesse o painel de administração, depois vá em Design > Theme Editor, e clique em index.php, à direita. Navegue pelo arquivo usando a barra lateral que logo você achará um código semelhante a este aqui de cima.
Se preferir editar o arquivo PHP diretamente, utilize um cliente FTp (como o Filezilla ou o SmartFTP) e navegue no seu servidor até a pasta onde está localizado seu blog, depois vá é wp-content/themes/[nome do tema ativo]/index.php.
Na verdade outras páginas do tema também têm o loop, tais como single.php (que mostra o post sozinho em uma página e a page.php).
Basicamente o que o loop faz é:
1. Consultar a base de dados para saber se há posts que atendem aos critérios de busca (por exemplo, posts classificados segundo uma determinada categoria, ou, na página inicial os "n" últimos posts publicados no seu blog);
2. Formar uma "fila" de posts que atendem a esses critérios;
3. Enquanto ainda houver posts na fila, repetir os comandos que se encontram dentro do loop, para cada um dos posts.
A imagem abaixo representa esquematicamente o funcionamento do loop:
Assim, para listar o título e o conteúdo de cada um dos posts, é só incluir esses comandos dentro do loop. Como fazer isso? Através das "Template Tags"!
Template Tags nada mais são que funções internas do WordPress que, quando acionadas, trazem como resultado um determinado elemento de texto, a ser mostrado na página html, que é a página que os usuários acabam vendo. Alguns exemplos de template tags estão listados abaixo:
<?php the_title(); ?> <?php the_content(); ?> <?php the_time('F jS, Y'); ?> <?php the_permalink(); ?>
Mostra o título do post
Mostra o conteúdo do post
Mostra a data em que o post foi publicado, seguindo o padrão indicado entre parênteses
Mostra a URL do post
O site oficial do WordPress tem uma página só sobre as Template Tags. Lá estão praticamente todas as tags disponíveis.
Para usá-las, basta adicioná-las dentro do loop, cuidando para complementar com os elementos html adequados para que o texto resultante da Tag seja adequadamente representado. Por exemplo, é importante diferenciar o título do corpo do post, para que o resultado final não fique visualmente pobre. Para isso, é possível fazer o seguinte:
<p class="info">Categorias: <?php the_category(' '); ?>. Postado em: <?php the_time('F jS, Y'); ?>
<h1><?php the_title(); ?></h1> <p class="info">Categorias: <?php the_category(' '); ?>. Postado em: <?php the_time('F jS, Y'); ?> <p><?php the_content(); ?></p>
Dessa forma é possível mostrar o título do Post destacado, com a tag html h1 e o post como parágrafo normal. Além disso, é possível usar estilos CSS para obter maior controle sobre o resultado final.
As imagens abaixo mostram um exemplo de Loop "básico".
5. Truques interessantes com o Loop do WordPress
Inserir AdSense depois do primeiro post
Depois dos comandos que mostram o conteúdo do post, coloque o seguinte código:
// Insira seu código do AdSense aqui
<?php endif; $count++ ; ?>
<?php if ($count == 1) : ?> // Insira seu código do AdSense aqui <?php endif; $count++ ; ?>
Mostrar apenas posts de uma determinada categoria
Para isso, é preciso refazer a consulta aos posts, dizendo ao WordPress para apenas recuperar os "n" posts de uma determinada categoria. Esse comando deve vir antes do Loop.
<?php query_posts('category_name=nome_da_categoria&showposts=10'); ?>
[Depois inicia o Loop]
<?php query_posts('category_name=nome_da_categoria&showposts=10'); ?> [Depois inicia o Loop]
Diferenciar posts de uma determinada categoria
Dentro do loop, é preciso testar se o post pertence à categoria determinada. Se sim, atribuir uma classe CSS. Se não, atribuir outra (a normal).
<!-- Início do Loop -->
!--< Testa se está na categoria 3. -->
<!-- Início do Loop --> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> !--< Testa se está na categoria 3. --> <?php if ( in_category('3') ) { ?> <div class="post-cat-three"> <?php } else { ?> <div class="post"> <?php } ?>