# The Loop WordPress

The Loop WordPress é a estrutura PHP central que itera sobre os posts retornados por uma query e renderiza cada um dentro de um template. É a peça mais usada em qualquer tema: home, arquivos de categoria, resultados de busca, single de post, página de tag. Sem o Loop, o WordPress não tem como exibir conteúdo dinâmico. Entender como ele funciona é pré-requisito para customizar tema ou criar plugin que mostre posts.

## O que é The Loop no WordPress

The Loop é o nome que a comunidade WordPress dá ao conjunto de funções have_posts() e the_post() rodando dentro de um while em PHP. Esse pequeno bloco de código é o que percorre cada post da query atual, define as variáveis globais ($post, $id) e disponibiliza as template tags para imprimir título, conteúdo, autor, data, thumbnail.

O Loop opera sobre a query principal que o WordPress monta automaticamente baseada na URL acessada. Em /categoria/marketing/, a query principal traz os posts dessa categoria. Em /?s=seo, traz os resultados de busca por "seo". O Loop não cria a query; ele apenas itera o que já foi montado.

O modelo data dos primeiros dias do WordPress, por volta de 2003, e mudou pouco em duas décadas. Mesmo com a chegada do Gutenberg e do Full Site Editing, o Loop continua sendo o coração da renderização de listas de posts em temas clássicos e em milhões de sites em produção hoje.

Quem desenvolve tema ou plugin precisa saber identificar onde o Loop está acontecendo. É no archive.php, no index.php, no single.php, no search.php. O [tema WordPress](https://full.services/glossario/tema-wordpress/) define a estrutura visual ao redor do Loop, mas o Loop é o motor que enche essa estrutura com dados.

## Anatomia do Loop padrão

O Loop padrão tem estrutura mínima fixa. O if checa se a query tem posts. O while itera enquanto houver. O the_post() avança o ponteiro e prepara as variáveis. Endwhile fecha o laço, endif fecha a verificação.

Dentro do Loop, você usa template tags para imprimir o conteúdo. the_title() imprime o título, the_content() imprime o corpo, the_permalink() imprime a URL, the_post_thumbnail() imprime a imagem destacada, the_excerpt() imprime o resumo. Cada uma dessas funções depende de $post estar setado, e o the_post() é quem faz isso a cada iteração.

Quando a query principal não tem posts (pesquisa sem resultado, categoria vazia), o else dispara um fallback. Geralmente uma mensagem como "Nenhum post encontrado". É o ponto onde temas bem feitos diferenciam: em vez de mensagem seca, mostram busca, posts populares, sugestão.

O Loop também respeita pagination. As template tags previous_posts_link() e next_posts_link() usam variáveis globais setadas pelo Loop para gerar links de navegação entre páginas de arquivos. Em sites com centenas de posts por categoria, é o que mantém o usuário navegando.

## Variáveis globais que o Loop expõe

Dentro de cada iteração, $post é o objeto WP_Post completo, com ID, título, conteúdo, autor, data, slug. $wp_query é a query global que está alimentando o Loop. Custom fields são acessíveis via get_post_meta($post->ID, 'chave', true). Quem usa [custom post type](https://full.services/glossario/custom-post-type/) e ACF interage exatamente nesse ponto.

## Como customizar The Loop

Customizar o Loop começa por substituir as template tags genéricas por marcação específica. Em vez de the_content() inteiro, use the_excerpt() para listas. Em vez de the_post_thumbnail() padrão, defina o tamanho registrado. Para listas de cards, normalmente você nem usa the_content().

O hook pre_get_posts permite alterar a query principal antes do Loop começar. Use functions.php do tema (ou um plugin) para excluir uma categoria específica da home, ordenar por meta_value em vez de data, alterar posts_per_page só na busca. É o jeito limpo de modificar a query sem criar um Loop alternativo.

Filtros como the_title, the_content e the_excerpt permitem modificar o output das template tags. Adicione um shortcode no fim do conteúdo, prefixe títulos de uma categoria, injete uma chamada para newsletter antes do final. O hook roda dentro do Loop e tem acesso a todas as variáveis.

Para layouts mais elaborados, você combina o Loop com lógica condicional. is_first_post(), is_main_query(), $wp_query->current_post == 0 permitem renderizar o primeiro post diferente dos demais (destaque maior, layout horizontal). É padrão em homes editoriais.

## Custom Loops com WP_Query

Quando você precisa exibir posts além da query principal, é hora de criar um custom Loop com WP_Query. Cenários comuns: "posts relacionados" no fim de um single, "últimos da categoria X" na sidebar, lista de produtos em destaque na home, grid de portfolio em página específica.

O fluxo é direto: instanciar new WP_Query() com argumentos, rodar have_posts() e the_post() do objeto criado, fechar com wp_reset_postdata() para restaurar a query principal. O wp_reset_postdata() é crítico: esquecer dele quebra o resto da página, porque o $post global fica apontando para o último post do Loop customizado.

Argumentos de WP_Query são poderosos. post_type, posts_per_page, meta_query, tax_query, orderby, order, paged. É possível filtrar por custom fields, taxonomia personalizada, intervalo de datas, autor específico. A documentação oficial em developer.wordpress.org/reference/classes/wp_query traz a referência completa.

Performance é o ponto de atenção. Cada WP_Query gera consulta SQL pesada se sem cache. Em páginas com múltiplos custom Loops, o tempo de resposta degrada rápido. Use [WP_Query](https://full.services/glossario/wp-query/) com fields => 'ids' quando só precisar dos IDs, e cache de objeto via Redis para queries reutilizadas.

Para projetos que precisam de campos customizados profundos, blocos Gutenberg dinâmicos consumindo loops complexos e relações entre custom post types, a FULL Services entrega o **ACF** (Advanced Custom Fields) PRO já licenciado dentro da plataforma. ACF expõe Repeater, Flexible Content e Relationship que se integram nativamente com o Loop e WP_Query, e elimina a necessidade de criar metaboxes manualmente em cada projeto.

**Também conhecido como:** wordpress loop, loop principal

## Termos relacionados

- [WP_Query](https://full.services/glossario/wp-query/)
- [Template Tag](https://full.services/glossario/template-tag/)
- [Tema WordPress](https://full.services/glossario/tema-wordpress/)
- [Custom Post Type](https://full.services/glossario/custom-post-type/)

---

Glossário WordPress da FULL Services: [The Loop WordPress](https://full.services/glossario/loop-wordpress/)
