Sai quando devi visualizzare un post di WordPress solo se ha un campo personalizzato specifico? Ci siamo passati.
Quando abbiamo iniziato con WordPress, vedere qualsiasi frammento di codice ci intimidiva, soprattutto quando tutto ciò che volevamo era visualizzare post con informazioni specifiche.
Ma ecco la buona notizia: dopo aver aiutato migliaia di principianti di WordPress, abbiamo scoperto che anche qualcosa che suona tecnico, come il filtraggio tramite campi personalizzati, non deve essere spaventoso.
Infatti, ti guideremo attraverso un semplice metodo di codice per farlo.
Questa soluzione funziona perfettamente sia che tu stia pubblicando normali post del blog o tipi di post personalizzati basati su criteri specifici.

💡 In sintesi: Puoi mostrare solo i post di WordPress che hanno un campo personalizzato specifico utilizzando una WP_Query personalizzata nei file del tuo tema (come index.php) per filtrare tali post.
📌 Nota rapida: Questo tutorial serve a visualizzare i post di WordPress se hanno un valore inserito in un campo personalizzato specifico. Se vuoi visualizzare campi personalizzati sul front-end di un post di WordPress, allora puoi leggere la nostra guida su come visualizzare i campi personalizzati nei temi WordPress.
Perché visualizzare post di WordPress con un campo personalizzato specifico?
Quando crei un post sul tuo sito web WordPress, puoi utilizzare i campi personalizzati per aggiungere metadati aggiuntivi al post.
I metadati sono informazioni aggiuntive che puoi aggiungere a un post. Ad esempio, se stessi scrivendo la recensione di un libro, potresti aggiungere campi personalizzati per 'Nome dell’autore' o 'Valutazione in stelle'.
I campi personalizzati sono un concetto avanzato di WordPress e ci sono molti modi per aggiungerli. Troverai molti suggerimenti utili su come utilizzare e visualizzare i campi personalizzati nel nostro post, Campi Personalizzati WordPress 101: Suggerimenti, Trucchi e Hack.

Uno dei nostri utenti ci ha chiesto come visualizzare i post di WordPress solo se era presente un campo personalizzato specifico. Questo può essere utile se stai cercando di creare una pagina personalizzata che elenchi tutti i post che contengono un campo e/o valore personalizzato specifico.
Dopo aver risposto con la soluzione, abbiamo pensato che sarebbe stato meglio condividerla con tutti, in modo che anche la più ampia community di WordPress.org potesse trarne beneficio.
Modificare i file del tuo tema WordPress: Cosa tenere a mente
Prima di iniziare, ci sono alcune cose importanti da tenere a mente quando si lavora con i file del tema.
Se aggiungi codice direttamente ai file del tuo tema, le tue modifiche andranno perse la prossima volta che aggiornerai il tuo tema.
Ecco perché ti consigliamo di utilizzare un plugin come WPCode per aggiungere in modo sicuro codice PHP personalizzato senza modificare i file del tuo tema. Se preferisci modificare i file del tema, assicurati di utilizzare un tema child in modo che le tue modifiche vengano preservate.
Per poter seguire correttamente questo tutorial, ecco alcune cose da tenere a mente:
- Questo tutorial prevede l'aggiunta di codice al tuo sito WordPress, quindi non è il più adatto per i principianti assoluti. Se sei nuovo a questo, dovrai leggere la nostra guida su come copiare e incollare codice in WordPress.
- Ti consigliamo di effettuare il backup del tuo sito web e/o di utilizzare un ambiente di staging in modo che il tuo sito live non venga influenzato in caso di errore. Questo perché aggiungerai codice ai file del tuo tema, il che può essere rischioso.
- Ti consigliamo di capire come funziona la gerarchia dei template di WordPress in modo da sapere dove aggiungere il codice in seguito.
- Dovrai anche familiarizzare con il funzionamento dei loop di WordPress perché chiameremo questi parametri in una query di WordPress.
📍Nota importante: Questo tutorial funziona solo con i temi WordPress classici. I temi a blocchi utilizzano l'Editor del sito e un approccio diverso per visualizzare i contenuti, quindi questo metodo di modifica dei file di template non si applicherà.
Detto questo, diamo un'occhiata a come visualizzare un post di WordPress solo se ha un campo personalizzato specifico.
- Passaggio 1: Installa un plugin per snippet di codice
- Passaggio 2: Aggiungi il codice della query personalizzata
- Passaggio 3: Filtra per valore meta specifico (facoltativo)
- Passaggio 4: Filtra per confronto meta (facoltativo)
- Passaggio 5: Filtra i post per campi personalizzati multipli (meta_query)
- Esempio pratico: Mostra solo recensioni a 5 stelle
- Domande frequenti sulla visualizzazione di un post se ha un campo personalizzato specifico
- Domande frequenti sulla visualizzazione di un post se ha un campo personalizzato specifico
- Scopri altri modi per personalizzare il tuo sito WordPress
Passaggio 1: Installa un plugin per snippet di codice
Alcuni tutorial ti diranno di aprire il file index.php del tuo tema e riscrivere completamente il loop di WordPress usando qualcosa chiamato WP_Query. Non ti consigliamo di farlo.
Modificare i file di template principali può compromettere il layout del tuo sito, causare query duplicate al database che rallentano il tuo sito e rompere completamente la tua paginazione (i pulsanti "Pagina successiva").
Invece, il modo più sicuro ed efficiente per farlo è utilizzare l'hook di azione pre_get_posts. Questo dice a WordPress di filtrare i post *prima* ancora di caricare il template della pagina.
Per aggiungere questo codice personalizzato, ti consigliamo di utilizzare un plugin come WPCode. Ti permette di aggiungere in modo sicuro codice PHP senza toccare direttamente i file del tuo tema, il che significa che il tuo sito non si romperà se commetti un errore e le tue modifiche non andranno perse quando il tuo tema verrà aggiornato.
Passaggio 2: Aggiungi il codice della query personalizzata
Una volta installato e attivato WPCode, naviga su Snippet di codice » Aggiungi snippet nella tua dashboard di WordPress e seleziona 'Aggiungi il tuo codice personalizzato (Nuovo snippet)'.

Assicurati che il "Tipo di codice" sia impostato su Snippet PHP.
Quindi, incolla il seguente codice:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field' );
function wpb_filter_posts_by_custom_field( $query ) {
// Only modify the main query on the front-end homepage
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
// Tell WordPress to only get posts with the custom field key 'color'
$query->set( 'meta_key', 'color' );
}
}
Per prima cosa, il codice verifica di modificare solo la query principale sul front-end del tuo sito web (specificamente la homepage del blog), lasciando il tuo pannello di amministrazione di WordPress completamente intatto.
Quindi, utilizza $query->set per indicare a WordPress di recuperare solo i post che hanno il campo personalizzato 'color' ad essi associato.
Poiché questo codice modifica la query prima che la pagina venga caricata, la paginazione predefinita del tuo tema funzionerà perfettamente senza codice aggiuntivo! Semplicemente attiva l'interruttore WPCode su Attivo e fai clic sul pulsante 'Salva snippet' per renderlo live.
Passaggio 3: Filtra per valore meta specifico (facoltativo)
E se volessi trovare post in cui il campo personalizzato 'color' ha un valore specifico, come 'blue'? Per farlo, devi solo aggiungere una regola meta_value al tuo codice.
Il tuo snippet aggiornato apparirà così:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field_value' );
function wpb_filter_posts_by_custom_field_value( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
}
}
Passaggio 4: Filtra per confronto meta (facoltativo)
Puoi estendere ulteriormente il tuo filtraggio con il parametro meta_compare. Questo ti permette di trovare post che non corrispondono a un valore.
Ad esempio, per visualizzare tutti i post in cui il colore è non 'blue', la tua query apparirà così:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_meta_compare' );
function wpb_filter_posts_by_meta_compare( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
$query->set( 'meta_compare', '!=' );
}
}
Il codice != dice a WordPress di trovare tutti i post in cui il campo 'colore' esiste ma non è uguale a 'blu'.
Ci sono molti altri operatori di confronto che puoi utilizzare, che puoi trovare nella documentazione ufficiale per sviluppatori di WordPress.
Passaggio 5: Filtra i post per campi personalizzati multipli (meta_query)
Per scenari più complessi in cui è necessario filtrare i post in base a più campi personalizzati o combinare condizioni (come AND/OR), utilizzerai l'array meta_query.
Questo ti permette di definire un array di condizioni, ognuna mirata a un diverso campo personalizzato o valore.
Ad esempio, per visualizzare post con il colore 'blue' e la dimensione 'large', il tuo codice apparirà così:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_multiple_fields' );
function wpb_filter_posts_by_multiple_fields( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$meta_query = array(
'relation' => 'AND', // or 'OR'
array(
'key' => 'color',
'value' => 'blue',
'compare' => '=',
),
array(
'key' => 'size',
'value' => 'large',
'compare' => '=',
),
);
$query->set( 'meta_query', $meta_query );
}
}
Questa query recupererà i post che hanno sia il campo personalizzato 'color' impostato su 'blue' SIA il campo personalizzato 'size' impostato su 'large'.
Puoi regolare il parametro 'relation' su 'OR' per trovare post che corrispondono ad almeno una delle condizioni.
Esempio pratico: Mostra solo recensioni a 5 stelle
Supponiamo che tu gestisca un sito WordPress di recensioni di libri e utilizzi un campo personalizzato chiamato star_rating per memorizzare i punteggi delle recensioni.
Puoi facilmente visualizzare solo i post che hanno una valutazione a 5 stelle sulla homepage del tuo blog usando questa query:
<?php
add_action( 'pre_get_posts', 'wpb_show_only_five_star_reviews' );
function wpb_show_only_five_star_reviews( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'star_rating' );
$query->set( 'meta_value', '5' );
}
}
Questo è estremamente utile se vuoi assicurarti che il tuo feed principale contenga solo i tuoi contenuti con le valutazioni più alte.
Domande frequenti sulla visualizzazione di un post se ha un campo personalizzato specifico
Ecco alcune domande che i nostri lettori pongono frequentemente sulla visualizzazione di un post se ha solo un campo personalizzato specifico:
Domande frequenti sulla visualizzazione di un post se ha un campo personalizzato specifico
Ecco alcune domande che i nostri lettori pongono frequentemente sulla visualizzazione di un post se ha solo un campo personalizzato specifico:
C'è un modo per farlo senza modificare i file del tema?
Sì! Infatti, il metodo pre_get_posts che delineiamo in questo tutorial è specificamente progettato in modo da non dover modificare i file del tuo tema. Utilizzando un plugin per snippet come WPCode, puoi applicare in sicurezza questo filtro al tuo sito senza toccare una singola riga del codice principale del tuo tema.
Posso filtrare i post per più campi personalizzati?
Puoi farlo. L'hook pre_get_posts accetta argomenti complessi. Utilizzeresti un array 'meta_query', che ti consente di creare un elenco di condizioni per corrispondere a più campi personalizzati contemporaneamente.
Questo metodo funziona con i temi a blocchi?
Mentre l'hook pre_get_posts può tecnicamente interagire con i temi a blocchi, il blocco Query Loop nativo di WordPress non dispone di un'interfaccia integrata per il filtraggio dei campi personalizzati "out of the box". Se stai utilizzando un tema a blocchi con Full Site Editing, l'approccio più semplice è utilizzare un plugin che aggiunge il filtraggio dei campi personalizzati al blocco Query Loop, piuttosto che scrivere PHP personalizzato.
Qual è la differenza tra 'meta_key' e 'meta_value'?
Pensa a ‘meta_key’ come al nome dell'etichetta, come ‘Colore’ o ‘Stato’. Il ‘meta_value’ sono i dati effettivi inseriti in quel campo, come ‘Blu’ o ‘Pubblicato’.
L'utilizzo della chiave trova qualsiasi post con quel campo personalizzato associato, mentre l'utilizzo del valore lo filtra per trovare solo i post con quella specifica informazione.
Scopri altri modi per personalizzare il tuo sito WordPress
Ecco altri modi per personalizzare le tue pagine WordPress:
- Come stilizzare le singole categorie in modo diverso in WordPress
- Come aggiungere una barra di scorrimento personalizzata in WordPress
- Come aggiungere stili personalizzati ai widget di WordPress
- Come stilizzare ogni post di WordPress in modo diverso
- Come utilizzare gli shortcode nei tuoi temi WordPress
- Come evidenziare i nuovi post per i visitatori di ritorno in WordPress
- Come cambiare la posizione della sidebar in WordPress
Speriamo che questo tutorial ti abbia aiutato a imparare come visualizzare un post di WordPress solo se ha un campo personalizzato specifico. Potresti anche voler vedere la nostra guida completa su come modificare un sito web WordPress e le nostre scelte esperte dei migliori plugin Figma per WordPress.
Se ti è piaciuto questo articolo, iscriviti al nostro Canale YouTube per tutorial video su WordPress. Puoi trovarci anche su Twitter e Facebook.


ahmed
ho una domanda signore se voglio visualizzare un singolo post e campi personalizzati, cosa dovrei fare.
non voglio visualizzare il post con campi personalizzati specifici. voglio visualizzare tutti i campi personalizzati del post
Dave101
Ciao, grazie per il tutorial utile. Ho una domanda, su un sito web WordPress ho impostato un valore meta chiamato "meta_country" e poi ho impostato ogni post con il paese dell'articolo, come "us", "uk", "fr"... Ora sto cercando di aggiungere da qualche parte nella home del blog un link che mostri l'elenco di tutti i post con un paese specifico e un tag specifico. Ad esempio, tutti i post "UK" taggati "APPLE".
Non capisco come fare, qualcuno potrebbe aiutarmi?
Максим Каминский
grazie mille, ha aiutato molto!
pjhooker
Thx!
Eduard Unruh
omg finalmente GRAZIE!
Mario M
Non sono riuscito a generare alcun risultato a meno che non includessi il parametro “post_type” nella query.
ad es.: $the_query = new WP_Query(‘post_type=page&meta_key=color’);
sacha
Magnifico, così semplice e pulito.
Grazie.
scottlee.me
@ad Ottima domanda! Sono curioso anch'io.
ad
Ciao,
Come potrei mostrare post che NON hanno un Custom Field specifico? Qualche idea?
Grazie!!!
tara tin
per quanto ne so da php dovrebbe essere meta_key!=’your key’
;devi solo sapere che "!" significa "non"
brunobruno2
Bellissimo! Molte grazie per averlo condiviso. Funziona a meraviglia.