Volete visualizzare un articolo di WordPress solo se ha un campo personalizzato specifico?
I campi personalizzati sono una comoda caratteristica di WordPress che consente di aggiungere informazioni aggiuntive agli articoli e alle pagine di WordPress. Potreste voler filtrare i vostri contenuti in base ai campi personalizzati.
In questo articolo vi mostreremo come visualizzare un articolo di WordPress solo se ha un campo personalizzato specifico.
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, compreso l’uso del plugin Advanced Custom Fields (ACF).
Troverete molti consigli utili su come utilizzare e visualizzare i campi personalizzati nel nostro articolo, WordPress Custom Fields 101: Tips, Tricks, and Hacks.
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:
- 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.
- 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.
- Si consiglia di capire come funziona la gerarchia di template di WordPress, in modo da sapere dove aggiungere il codice in seguito.
- È 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 diversa di file di tema.
Detto questo, vediamo come visualizzare un articolo 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.
Speriamo che questo tutorial vi abbia aiutato a capire come visualizzare un articolo di WordPress solo se ha un campo personalizzato specifico. Potreste anche voler consultare la nostra guida completa alla SEO di WordPress o dare un’occhiata al nostro elenco dei migliori plugin WordPress per far crescere il vostro sito web.
Se questo articolo vi è piaciuto, iscrivetevi al nostro canale YouTube per le esercitazioni video su WordPress. Potete trovarci anche su Twitter e Facebook.
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!
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
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?
Максим Каминский says
great thanks, it help wery well!
pjhooker says
Thx!
Eduard Unruh says
omg finally THANKS!
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’);
sacha says
Wonderful, just so simple and clean.
Thank you.
scottlee.me says
@ad Great question! I’m curious too.
ad says
Hi,
How could I show posts that DON’T have a specific Custom Field? Any idea?
Thanks!!!
tara tin says
as I know from php it must be meta_key!=’your key’
;just you need to know that “!” means “not”
brunobruno2 says
Beatiful! Many thanks for sharing it. Works like a charm.