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.
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.
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 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:
- Come dare uno stile diverso alle singole categorie in WordPress
- Come aggiungere una barra di scorrimento personalizzata in WordPress
- Come aggiungere stili personalizzati ai widget di WordPress
- Come dare uno stile diverso a ogni pubblicazione di WordPress
- Come utilizzare gli shortcode nei temi di WordPress
- Come mettere in evidenza i nuovi post per i visitatori che ritornano in WordPress
- Come modificare il lato della barra laterale in 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.
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
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?
Максим Каминский
great thanks, it help wery well!
pjhooker
Thx!
Eduard Unruh
omg finally THANKS!
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’);
sacha
Wonderful, just so simple and clean.
Thank you.
scottlee.me
@ad Great question! I’m curious too.
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”
brunobruno2
Beatiful! Many thanks for sharing it. Works like a charm.