Tutorial WordPress affidabili, quando ne hai più bisogno.
Guida per principianti a WordPress
WPB Cup
25 Milioni+
Siti web che utilizzano i nostri plugin
16+
Anni di esperienza con WordPress
3000+
Tutorial WordPress di esperti

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

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.

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

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

Puoi aggiungere metadati a un post utilizzando i campi personalizzati

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:

  1. 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.
  2. 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.
  3. Ti consigliamo di capire come funziona la gerarchia dei template di WordPress in modo da sapere dove aggiungere il codice in seguito.
  4. 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

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)'.

Aggiungi uno snippet personalizzato in WPCode

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:

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.

Divulgazione: Il nostro contenuto è supportato dai lettori. Ciò significa che se fai clic su alcuni dei nostri link, potremmo guadagnare una commissione. Vedi come è finanziato WPBeginner, perché è importante e come puoi supportarci. Ecco il nostro processo editoriale.

Il Toolkit WordPress Definitivo

Ottieni l'accesso GRATUITO al nostro toolkit - una raccolta di prodotti e risorse relative a WordPress che ogni professionista dovrebbe avere!

Interazioni del lettore

11 CommentiLascia una risposta

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

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

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

Lascia un commento

Grazie per aver scelto di lasciare un commento. Tieni presente che tutti i commenti sono moderati secondo la nostra politica sui commenti e il tuo indirizzo email NON verrà pubblicato. Si prega di NON utilizzare parole chiave nel campo del nome. Avviamo una conversazione personale e significativa.