Você sabe quando precisa mostrar certas postagens do WordPress com base em campos personalizados? Nós já passamos por isso.
Quando começamos com o WordPress, ver qualquer trecho de código parecia intimidante, especialmente quando tudo o que queríamos era exibir postagens com informações específicas.
Mas eis a boa notícia: depois de ajudar milhares de iniciantes no WordPress, descobrimos que até mesmo algo que soa técnico, como a filtragem por campos personalizados, não precisa ser assustador.
Na verdade, vamos guiá-lo por um método de código simples para fazer isso.
Esta solução funciona perfeitamente, quer você esteja publicando postagens regulares de blog ou tipos de postagem personalizados com base em critérios específicos.

📌 Nota Rápida: Este tutorial é para exibir postagens do WordPress se elas tiverem um valor inserido em um campo personalizado específico.
Se você deseja exibir campos personalizados na parte frontal de uma postagem do WordPress, pode ler nosso guia sobre como exibir campos personalizados em temas do WordPress.
Por que exibir postagens do WordPress com um campo personalizado específico?
Ao criar uma postagem em seu site WordPress, você pode usar campos personalizados para adicionar metadados adicionais à postagem.
Metadados são informações extras que você pode adicionar a uma postagem. Por exemplo, se você estivesse escrevendo uma resenha de livro, poderia adicionar campos personalizados para 'Nome do Autor' ou 'Avaliação por Estrelas'.
Campos personalizados são um conceito avançado do WordPress, e existem muitas maneiras de adicionar campos personalizados no WordPress. Você encontrará muitas dicas úteis sobre como usar e exibir campos personalizados em nosso post, Campos Personalizados do WordPress 101: Dicas, Truques e Hacks.

Um de nossos usuários nos perguntou como exibir posts do WordPress apenas se um campo personalizado específico estivesse presente. Isso pode ser útil se você estiver procurando criar uma página personalizada que liste todos os posts que contêm um campo personalizado e/ou valor específico.
Após responder com a solução, pensamos que seria melhor compartilhá-la com todos para que a comunidade maior do WordPress.org também pudesse se beneficiar dela.
Editando Seus Arquivos de Tema do WordPress: O Que Ter em Mente
Para poder seguir este tutorial corretamente, aqui estão algumas coisas que você deve ter em mente:
- Este tutorial envolve a edição dos seus arquivos de tema do WordPress com código, portanto, não é o mais adequado para iniciantes completos. Se você é novo nisso, precisará ler nosso guia sobre como copiar e colar código no WordPress.
- Recomendamos fazer backup do seu site e/ou usar um ambiente de staging para que seu site ativo não seja afetado quando ocorrer um erro. Isso ocorre porque você adicionará código aos arquivos do seu tema, o que pode ser arriscado.
- Recomendamos entender como funciona a hierarquia de templates do WordPress para que você saiba onde adicionar o código posteriormente.
- Você também precisará se familiarizar com o funcionamento dos loops do WordPress, pois chamaremos esses parâmetros em uma consulta do WordPress.
Além disso, observe que este tutorial funciona apenas com temas clássicos do WordPress, pois os temas de blocos têm um conjunto diferente de arquivos de tema.
Dito isso, vamos ver como exibir uma postagem do WordPress apenas se ela tiver um campo personalizado específico.
Como Filtrar Suas Postagens Com Base em Campos Personalizados Específicos
Antes de mostrarmos o código que você precisa usar, você precisa saber em qual arquivo de tema adicioná-lo. Muito provavelmente, será um modelo de página, como index.php, archive.php ou page.php.
Vamos supor que você queira adicioná-lo ao arquivo index.php do tema Twenty Twenty-One. Veja como está a parte do loop do WordPress desse arquivo no momento:
<?php
if ( have_posts() ) {
// Load posts loop.
while ( have_posts() ) {
the_post();
get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
}
// Previous/next page navigation.
twenty_twenty_one_the_posts_navigation();
} else {
// If no content, include the "No posts found" template.
get_template_part( 'template-parts/content/content-none' );
}
get_footer();
Este código usa o loop padrão do WordPress (have_posts() e the_post()) para exibir posts. Este método é adequado para a maioria dos temas padrão do WordPress e é usado para exibir posts sem nenhum filtro ou ordenação personalizada.
Agora, vamos supor que você use o campo personalizado 'color' como no exemplo acima. Você precisará substituir todo esse código pelo trecho abaixo:
<?php
// The Query to show a specific Custom Field
$the_query = new WP_Query('meta_key=color');
// Load posts loop.
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
}
// Previous/next page navigation.
twenty_twenty_one_the_posts_navigation();
} else {
// If no content, include the "No posts found" template.
get_template_part( 'template-parts/content/content-none' );
}
// Reset Post Data
wp_reset_postdata();
get_footer();
Neste novo código, introduzimos uma consulta personalizada para buscar posts que tenham um campo personalizado específico (neste caso, qualquer post com o campo personalizado 'color').
Em seguida, ele usa um loop personalizado (if ($the_query->have_posts())) para iterar sobre os posts buscados por esta consulta personalizada, exibindo o conteúdo de cada post da mesma forma que o primeiro trecho.
Também adicionamos a função wp_reset_postdata() para garantir que o WordPress retorne à exibição correta de todos os posts após a consulta personalizada. Isso garante que o site funcione sem problemas e mostre o conteúdo certo aos usuários.
Agora, e se você quiser encontrar posts onde o campo personalizado 'color' tenha um valor específico, como 'blue'? Para fazer isso, você só precisa adicionar um parâmetro 'meta_value' à sua consulta.
Seu código de consulta atualizado ficará assim:
$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );
💡Dica Pro: Você pode ir ainda mais longe na sua filtragem com o parâmetro meta_compare. Isso permite que você encontre posts que não correspondem a um valor.
Por exemplo, para exibir todos os posts onde a cor não é 'blue', sua consulta ficaria assim:
$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '!=' ) );
O != diz ao WordPress para encontrar todos os posts onde o campo 'color' existe, mas não é igual a 'blue'.
Existem muitos outros operadores de comparação que você pode usar, que podem ser encontrados na documentação oficial do desenvolvedor do WordPress.
Depois de salvar o código no arquivo PHP do template da página, você pode verificar seu site WordPress no front-end para ver seu código em ação.
Perguntas Frequentes Sobre Exibir um Post Se Ele Tiver um Campo Personalizado Específico
Aqui estão algumas perguntas que nossos leitores frequentemente fazem sobre exibir um post se ele tiver apenas um campo personalizado específico:
Existe uma maneira de fazer isso sem editar os arquivos do tema?
Sim, e é o método que recomendamos para a maioria dos usuários. Um plugin como o WPCode permite que você adicione com segurança snippets de PHP personalizados como este sem tocar diretamente nos arquivos do seu tema.
Isso protege seu site contra erros e garante que suas personalizações não sejam perdidas quando você atualizar seu tema.
Posso filtrar posts por múltiplos campos personalizados?
Você pode. A função WP_Query é muito poderosa e aceita argumentos mais complexos. Você usaria um parâmetro 'meta_query', que permite construir um array de condições para corresponder a múltiplos campos personalizados de uma vez.
Este método funciona com temas de blocos?
Este tutorial específico foca em temas clássicos, editando arquivos como index.php ou archive.php. Temas de blocos usam o Editor de Site e não dependem desses arquivos.
Para obter um resultado semelhante em um tema de blocos, você usaria o bloco Query Loop e suas opções de filtragem integradas, que não exigem código personalizado.
Qual é a diferença entre 'meta_key' e 'meta_value'?
Pense em 'meta_key' como o nome do rótulo, como 'Cor' ou 'Status'. O 'meta_value' é o dado real inserido nesse campo, como 'Azul' ou 'Publicado'.
Usar a chave encontra qualquer post com esse campo personalizado, enquanto usar o valor encontra qualquer post com essa informação específica.
Saiba Mais Maneiras de Personalizar Seu Site WordPress
Aqui estão mais maneiras de personalizar suas páginas do WordPress:
- Como Estilizar Categorias Individuais de Forma Diferente no WordPress
- Como Adicionar uma Barra de Rolagem Personalizada no WordPress
- Como Adicionar Estilos Personalizados a Widgets do WordPress
- Como Estilizar Cada Post do WordPress de Forma Diferente
- Como Usar Shortcodes em Seus Temas do WordPress
- Como Destacar Novas Publicações para Visitantes Recorrentes no WordPress
- Como Mudar o Lado da Barra Lateral no WordPress
Esperamos que este tutorial tenha ajudado você a aprender como exibir um post do WordPress apenas se ele tiver um campo personalizado específico. Você também pode querer ver nosso guia completo sobre como editar um site WordPress e nossas escolhas de especialistas dos melhores plugins Figma para WordPress.
Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.


ahmed
Tenho uma pergunta, senhor, se eu quiser exibir um único post e campos personalizados, o que devo fazer.
Eu não quero exibir o post com campos personalizados específicos. Eu quero exibir todos os campos personalizados do post
Dave101
Oi, obrigado pelo tutorial útil. Tenho uma pergunta, em um site WordPress, defini um valor meta chamado "meta_country" e depois defini cada post com o país do artigo, como "us", "uk", "fr"... Agora estou tentando adicionar em algum lugar na página inicial do blog um link que mostre a lista de todos os posts com um país específico e uma tag específica. Por exemplo, todos os posts "UK" com a tag "APPLE".
Eu não entendo como fazer isso, alguém poderia me ajudar?
Максим Каминский
muito obrigado, ajudou muito!
pjhooker
Valeu!
Eduard Unruh
omg finalmente OBRIGADO!
Mario M
Não consegui gerar nenhum resultado a menos que eu incluísse o parâmetro “post_type” na consulta.
ie: $the_query = new WP_Query(‘post_type=page&meta_key=color’);
sacha
Maravilhoso, tão simples e limpo.
Obrigado.
scottlee.me
@ad Ótima pergunta! Estou curioso também.
ad
Olá,
Como eu poderia mostrar posts que NÃO têm um Campo Personalizado específico? Alguma ideia?
Obrigado!!!
tara tin
pelo que sei de php deve ser meta_key!=’sua chave’
;você só precisa saber que “!” significa “não”
brunobruno2
Lindo! Muito obrigado por compartilhar. Funciona perfeitamente.