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

Come visualizzare un articolo di WordPress solo se ha un campo personalizzato specifico

Forse avete aggiunto un campo personalizzato alle vostre pubblicazioni su WordPress e volete mostrare solo i post con quel campo. Oppure state cercando di creare una pagina speciale che elenchi le pubblicazioni con uno specifico valore di campo personalizzato. Non siete soli!

Uno dei nostri lettori ci ha chiesto come fare e abbiamo pensato che sarebbe stato utile condividere la risposta con tutti.

I campi personalizzati consentono di aggiungere informazioni supplementari alle pagine e alle pubblicazioni. Sono ottimi per organizzare e filtrare i contenuti. In questo articolo vi mostreremo come visualizzare le pubblicazioni di WordPress solo se hanno un campo personalizzato specifico.

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

Nota: questa guida visualizza i post di WordPress che hanno un valore inserito in un campo personalizzato specifico. Se volete visualizzare i campi personalizzati sul frontend di un post di WordPress, potete leggere la nostra guida su come visualizzare i campi personalizzati nei temi di WordPress.

Perché visualizzare gli articoli di WordPress con un campo personalizzato specifico?

Quando si crea un articolo sul proprio sito web WordPress, è possibile utilizzare i campi personalizzati per aggiungere metadati aggiuntivi all’articolo. I metadati sono informazioni su chi siamo, come il titolo, l’autore e la data di pubblicazione.

I campi personalizzati sono un concetto avanzato di WordPress e ci sono molti modi per aggiungere campi personalizzati in WordPress. Troverete molti consigli utili su come utilizzare e visualizzare i campi personalizzati nella nostra pubblicazione, WordPress Custom Fields 101: Tips, Tricks, and Hacks.

You Can Add Metadata to a Post Using Custom Fields

Un utente ci ha chiesto come visualizzare gli articoli di WordPress solo se è presente un campo personalizzato specifico. Questo può essere utile se si vuole creare una pagina personalizzata che elenchi tutti gli articoli che contengono uno specifico campo e/o valore personalizzato.

Dopo aver risposto con la risposta, abbiamo pensato che sarebbe stato meglio condividerla con tutti gli altri, in modo che anche la Community di WordPress.org potesse trarne beneficio.

Modifica dei file del tema di WordPress: Cosa tenere presente

Per poter seguire correttamente questa esercitazione, ecco alcune cose da tenere a mente:

  1. Questo tutorial prevede la modifica dei file del tema di WordPress con il codice, quindi non è il più adatto per i principianti. Se siete alle prime armi, dovrete leggere la nostra guida su come copiare e incollare il codice in WordPress.
  2. Si consiglia di eseguire il backup del sito web e/o di utilizzare un ambiente di staging, in modo che il sito live non venga influenzato quando si verifica un errore. Questo perché si aggiungerà del codice ai file del tema, il che può essere rischioso.
  3. Si consiglia di capire come funziona la gerarchia di template di WordPress, in modo da sapere dove aggiungere il codice in seguito.
  4. È inoltre necessario acquisire familiarità con il funzionamento dei query loop di WordPress, perché questi parametri verranno richiamati in una query di WordPress.

Si noti inoltre che questo tutorial funziona solo con i temi classici di WordPress, in quanto i temi a blocchi hanno una serie di file diversi.

Detto questo, vediamo come visualizzare una pubblicazione di WordPress solo se ha un campo personalizzato specifico.

Visualizzare un articolo di WordPress solo se possiede un campo personalizzato specifico

Prima di mostrarvi il codice da utilizzare, dovete sapere a quale file del tema dovete aggiungerlo. Molto probabilmente si tratta di un template di pagina, come index.php, archivia.php o page.php.

Supponiamo di volerlo aggiungere al file index.php del tema Twenty Twenty-One. Ecco come appare attualmente la parte del file relativa al loop di WordPress:

<?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();

Questo codice utilizza il loop predefinito di WordPress(have_posts() e the_post()) per visualizzare gli articoli. Questo metodo è adatto alla maggior parte dei temi standard di WordPress e viene utilizzato per visualizzare gli articoli senza alcun filtro o ordinamento personalizzato.

Ora, supponiamo di utilizzare il campo personalizzato “colore” come nell’esempio precedente. È necessario sostituire l’intero codice con lo snippet sottostante:

<?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();

In questo nuovo codice, abbiamo introdotto una query personalizzata($the_query = new WP_Query('meta_key=color');) per recuperare gli articoli in base al valore di un campo personalizzato specifico (in questo caso, i post con il campo personalizzato ‘color’).

Utilizza quindi una query loop personalizzata(if ($the_query->have_posts()) per iterare sui post recuperati da questa query personalizzata, visualizzando il contenuto di ogni articolo nello stesso modo del primo frammento.

Abbiamo anche aggiunto la funzionewp_reset_postdata() per garantire che WordPress ritorni a visualizzare correttamente tutti gli articoli dopo aver effettuato una query personalizzata. In questo modo il sito funziona senza problemi e mostra agli utenti i contenuti corretti.

Ora, se si vogliono mostrare articoli specifici che hanno un campo personalizzato con un valore specifico, basta modificare la query dalla riga 3 in questo modo:

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

Questo visualizza tutti gli articoli che hanno un valore “blu” in un campo personalizzato.

Se si vuole essere sicuri che il campo ‘colore’ abbia il valore ‘blu’, il codice della query sarà simile a questo:

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

Per sapere chi sono i parametri aggiuntivi che si possono usare nella query, si può consultare la pagina di riferimento del codice WP_Query di WordPress.

Una volta salvato il codice nel file PHP del template della pagina, si può controllare il sito WordPress sul frontend per vedere il codice in azione.

Approfondisci i modi per personalizzare il tuo sito WordPress

Ecco altri modi per personalizzare le pagine di WordPress:

Speriamo che questo tutorial vi abbia aiutato a capire come visualizzare una pubblicazione di WordPress solo se ha un campo personalizzato specifico. Vi consigliamo di consultare anche la nostra guida completa su come modificare un sito web WordPress e la nostra selezione dei migliori plugin Figma per WordPress.

Se questo articolo vi è piaciuto, iscrivetevi al nostro canale YouTube per le esercitazioni video su WordPress. Potete trovarci anche su Twitter e Facebook.

Divulgazione: I nostri contenuti sono sostenuti dai lettori. Ciò significa che se cliccate su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come WPBeginner è finanziato , perché è importante e come puoi sostenerci. Ecco il nostro processo editoriale .

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.

Il kit di strumenti WordPress definitivo

Ottenete l'accesso gratuito al nostro kit di strumenti - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Reader Interactions

12 commentiLascia una risposta

  1. Syed Balkhi

    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

    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

    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. Максим Каминский

    great thanks, it help wery well!

  5. Eduard Unruh

    omg finally THANKS!

  6. Mario M

    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’);

  7. sacha

    Wonderful, just so simple and clean.
    Thank you.

  8. scottlee.me

    @ad Great question! I’m curious too.

  9. ad

    Hi,

    How could I show posts that DON’T have a specific Custom Field? Any idea?

    Thanks!!!

    • tara tin

      as I know from php it must be meta_key!=’your key’

      ;just you need to know that “!” means “not”

  10. brunobruno2

    Beatiful! Many thanks for sharing it. Works like a charm.

Lascia una risposta

Grazie per aver scelto di lasciare un commento. Tenga presente che tutti i commenti sono moderati in base alle nostre politica dei commenti e il suo indirizzo e-mail NON sarà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avremo una conversazione personale e significativa.