Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
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

Avete presente quel momento in cui avete bisogno di mostrare determinate pubblicazioni di WordPress in base a campi personalizzati? Ci siamo passati. Quando abbiamo iniziato a lavorare su WordPress, la visione di qualsiasi snippet di codice ci intimoriva, soprattutto quando volevamo solo visualizzare i post con informazioni specifiche.

Ma ecco la buona notizia: dopo aver aiutato migliaia di principianti di WordPress, abbiamo scoperto che anche qualcosa che sembra tecnico come il filtro dei campi personalizzati non deve essere spaventoso. Infatti, vi guideremo attraverso un semplice metodo di codice per farlo.

Questa soluzione funziona perfettamente sia che si pubblichino normali post sul blog sia che si pubblichino post type / tipi di contenuto personalizzati in base a criteri specifici.

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

📌 Nota rapida: questo tutorial visualizza le pubblicazioni di WordPress se hanno un valore inserito in un campo personalizzato specifico.

Se volete visualizzare i campi personalizzati sul frontend di una pubblicazione di WordPress, potete leggere la nostra guida su come visualizzare i campi personalizzati nei temi 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.

Come filtrare le pubblicazioni in base a specifici campi personalizzati

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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 le pubblicazioni in base al valore di un campo personalizzato specifico nel boxed (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.

💡 Volete costruire un sito web in WordPress senza troppe complicazioni? Lasciate che il nostro team di WPBeginner Pro Services se ne occupi per voi. Il nostro team di esperti può creare un sito web personalizzato e professionale su misura per voi, completo di caratteristiche come una pagina personalizzata che filtra i post in base a campi personalizzati.

Prenotate oggi stesso una chiamata di consulenza gratuita con il nostro team!

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.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. See how WPBeginner is funded, why it matters, and how you can support us. Here's our editorial process.

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.

The Ultimate WordPress Toolkit

Get FREE access to our toolkit - a collection of WordPress related products and resources that every professional should have!

Reader Interactions

11 commentiLeave a Reply

  1. 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

  2. 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?

  3. Максим Каминский

    great thanks, it help wery well!

  4. Eduard Unruh

    omg finally THANKS!

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

  6. sacha

    Wonderful, just so simple and clean.
    Thank you.

  7. scottlee.me

    @ad Great question! I’m curious too.

  8. 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”

  9. brunobruno2

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

Leave A Reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.