Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Copa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Como exibir um post do WordPress somente se ele tiver um campo personalizado específico

Nota editorial: Ganhamos uma comissão de links de parceiros no WPBeginner. As comissões não afetam as opiniões ou avaliações de nossos editores. Saiba mais sobre Processo editorial.

Você gostaria de exibir um post do WordPress somente se ele tiver um campo personalizado específico?

Os campos personalizados são um recurso útil do WordPress que permite adicionar informações adicionais às suas postagens e páginas do WordPress. Talvez você queira filtrar seu conteúdo por seus campos personalizados.

Neste artigo, mostraremos como exibir um post do WordPress somente se ele tiver um campo personalizado específico.

How to Display a WordPress Post Only if It Has a Specific Custom Field

Por que exibir posts do WordPress com um campo personalizado específico?

Ao criar uma postagem em seu site do WordPress, você pode usar campos personalizados para acrescentar metadados adicionais à postagem. Metadados são informações sobre a postagem, como título, autor e data de publicação.

Os campos personalizados são um conceito avançado do WordPress, e há muitas maneiras de adicionar campos personalizados no WordPress, inclusive usando o plug-in Advanced Custom Fields (ACF).

Você encontrará muitas dicas úteis sobre como usar e exibir campos personalizados em nossa postagem, WordPress Custom Fields 101: Tips, Tricks, and Hacks.

You Can Add Metadata to a Post Using Custom Fields

Um de nossos usuários nos perguntou como exibir posts do WordPress somente se um campo personalizado específico estiver presente. Isso pode ser útil se você estiver procurando criar uma página personalizada que liste todas as postagens que contenham um campo e/ou valor personalizado específico.

Depois de respondermos com a resposta, achamos que seria melhor compartilhá-la com todos, para que a comunidade maior do WordPress.org também possa se beneficiar dela.

Edição dos arquivos de tema do WordPress: O que é preciso ter em mente

Para poder seguir este tutorial corretamente, aqui estão algumas coisas que você deve ter em mente:

  1. Este tutorial envolve a edição de seus arquivos de tema do WordPress com código, portanto, não é o mais adequado para iniciantes. Se você for novato nisso, precisará ler nosso guia sobre como copiar e colar código no WordPress.
  2. Recomendamos fazer backup do seu site e/ou usar um ambiente de teste para que o site ativo não seja afetado quando ocorrer um erro. Isso ocorre porque você estará adicionando código aos arquivos do tema, o que pode ser arriscado.
  3. Recomendamos entender como funciona a hierarquia de modelos do WordPress para que você saiba onde adicionar o código posteriormente.
  4. 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 só funciona com temas clássicos do WordPress, pois os temas em bloco têm um conjunto diferente de arquivos de tema.

Dito isso, vamos dar uma olhada em como exibir um post do WordPress somente se ele tiver um campo personalizado específico.

Exibição de um post do WordPress somente se ele tiver um campo personalizado específico

Antes de mostrarmos o código a ser usado, você precisa saber em qual arquivo de tema deve ser adicionado. Muito provavelmente, será um modelo de página, como index.php, archive.php ou page.php.

Digamos que você queira adicioná-lo ao arquivo index.php do tema Twenty Twenty-One. Esta é a aparência da 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();

Esse código usa o loop padrão do WordPress(have_posts() e the_post()) para exibir posts. Esse método é adequado para a maioria dos temas padrão do WordPress e é usado para exibir posts sem qualquer filtragem ou classificação personalizada.

Agora, digamos 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();

Nesse novo código, introduzimos uma consulta personalizada($the_query = new WP_Query('meta_key=color');) para buscar posts com base em um valor de campo personalizado específico (nesse caso, posts com um campo personalizado ‘color’).

Em seguida, ele usa um loop personalizado(if ($the_query->have_posts())) para iterar os posts obtidos por essa consulta personalizada, exibindo o conteúdo de cada post da mesma forma que o primeiro snippet.

Também adicionamos a funçãowp_reset_postdata() para garantir que o WordPress volte a exibir todos os posts corretamente após a consulta personalizada. Isso garante que o site funcione sem problemas e mostre o conteúdo correto aos usuários.

Agora, se você quiser mostrar posts específicos que tenham um campo personalizado com um valor específico, basta alterar a consulta da linha 3 da seguinte forma:

$the_query = new WP_Query( 'meta_value=blue' );

Isso exibirá todos os posts que têm um valor “azul” em qualquer campo personalizado.

Se você quiser ter certeza de que o campo “color” tem um valor “blue”, o código da consulta será parecido com este:

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );

Você pode saber mais sobre parâmetros adicionais que podem ser usados em sua consulta na página de referência de código WP_Query do WordPress.

Depois de salvar o código no arquivo PHP do modelo de página, você pode verificar seu site WordPress no front-end para ver o código em ação.

Esperamos que este tutorial tenha ajudado você a aprender como exibir um post do WordPress somente se ele tiver um campo personalizado específico. Talvez você também queira ver nosso guia completo de SEO para WordPress ou conferir nossa lista dos melhores plug-ins do WordPress para expandir seu site.

Se você gostou deste artigo, inscreva-se em nosso canal do YouTube para receber tutoriais em vídeo sobre o WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Divulgação: Nosso conteúdo é apoiado pelo leitor. Isso significa que, se você clicar em alguns de nossos links, poderemos receber uma comissão. Veja como o WPBeginner é financiado, por que isso é importante e como você pode nos apoiar. Aqui está nosso processo editorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

O kit de ferramentas definitivo WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Reader Interactions

12 ComentáriosDeixe uma resposta

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. ahmed says

    i have a question sir if i want to display single post and custom fields then what i should do.
    i dont want to display the post with specific custom fields. i want to display all custom fields of post

  3. Dave101 says

    Hi, thank for the useful tutorial. I have a question, in a wordpress website i set a meta value named “meta_country” and then i set every post with the country of the article, like “us”, “uk”, “fr”… Now I’m trying to add somewhere in the home of the blog a link that show list of all post with a specific country and a specific tag. For example all “UK” post tagged “APPLE”.
    I don’t understand how to do that, someone could help me?

  4. Mario M says

    I wasnt able to generate any results unless I included “post_type” parameter into the query.

    ie: $the_query = new WP_Query(‘post_type=page&meta_key=color’);

Deixe uma resposta

Obrigado por deixar um comentário. Lembre-se de que todos os comentários são moderados de acordo com nossos política de comentários, e seu endereço de e-mail NÃO será publicado. NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.