Aggiungere pagine e Custom Post Types al blog di WordPress

ATTENZIONE: questo articolo è stato scritto oltre un anno fa, ed i contenuti potrebbero non essere più validi o compatibili. Sei pregato di tenerne conto, e se hai informazioni in merito di segnalarmele, grazie.

Modificare il loop di WordPress

Di default, WordPress mostra nella home, o nella pagina destinata al blog, l’elenco degli articoli in ordine cronologico.

Mettiamo però il caso che a noi ci interessi mostrare anche diversi tipi di post, oltre gli articoli, come le pagine ed eventuali Custom Post Types che possiamo aver creato, o che abbiamo ereditato con il tema.

Possiamo tirare in ballo anche WooCommerce, volendo, ed aggiungere i nuovi prodotti.

Vediamo come fare, con dei semplici snippet.

Come al solito, gli snippet che seguono vanno inseriti nel file delle funzioni del tema, il classico functions.php, e come al solito è meglio lavorare su un tema child di WordPress.

Elencare tutti i tipi di post

Lo snippet che segue mostra tutti i tipi di post presenti in WordPress oltre agli articoli, come pagine e Custom Post Types (e prodotti di WooCommerce se presenti).

add_action( 'pre_get_posts', 'wpsites_include_all_post_types' );
function wpsites_include_all_post_types( $query ) {
if ( is_home() && $query->is_main_query() ) {
$query->set( 'post_type', 'all' );
return $query;
 
    }
}

Questo snippet non ha bisogno di essere modificato.

Elencare articoli e Custom Post Type

Questo snippet, invece, serve per elencare articoli e un Custom Post types, ad esempio il classico “portfolio”.

add_action( 'pre_get_posts', 'wpsites_add_custom_post_types_to_loop' );
function wpsites_add_custom_post_types_to_loop( $query ) {
if ( is_home() && $query->is_main_query() && !is_admin() ) {
$query->set( 'post_type', array( 'post', 'portfolio' ) );
return $query;
 
    }
}

Bisogna sostituire la voce “portfolio”, nella riga n. 4, con il nome preciso del Custom Post Type che ci interessa.
Se si vogliono aggiungere anche altri Custom Post Types, basta separarli con una virgola.

Elencare articoli e pagine

Questo snippet elenca gli articoli e le pagine standard di WordPress.

add_action( 'pre_get_posts', 'wpsites_posts_pages_home_loop' );
function wpsites_posts_pages_home_loop( $query ) {
if ( is_home() && $query->is_main_query() && !is_admin() ) {
$query->set( 'post_type', array( 'post', 'page' ) );
return $query;
 
    }
}

Non ha bisogno di essere modificato per funzionare.

Elencare articoli e prodotti di WooCommerce

In questo esempio, vengono elencati gli articoli di WordPress ed i prodotti di WooCommerce.

add_action( 'pre_get_posts', 'wpsites_posts_pages_home_loop' );
function wpsites_posts_pages_home_loop( $query ) {
if ( is_home() && $query->is_main_query() && !is_admin() ) {
$query->set( 'post_type', array( 'post', 'product' ) );
return $query;
 
    }
}

Anche questo snippet non ha bisogno di essere modificato.

In conclusione, cosa possiamo elencare in WordPress?

La risposta è semplice: tutti i tipi di post presenti in WordPress.

Come puoi notare, a parte il primo esempio che è leggermente diverso, negli altri viene sfruttato un array PHP in cui si decide quali post mostrare. Possiamo decidere che tipi di post aggiungere, sempre nella riga numero 4 degli scrip di esempio, basta che i loro nomi siano separati da una virgola.
Esempio:

( 'post', 'page', 'product', 'nome_post_personalizzato' )

Come risulterà la visualizzazione dell’elenco dei post?

Qui si apre un altro capitolo: post e pagine sono strutturati differentemente, hanno dati diversi. I Custom Post Types pure, quindi è abbastanza normale che nell’elenco di WordPress differenti tipi di post siano visualizzati in modo diverso.

Il risultato cambierà inoltre anche in funzione del tema utilizzato.

In genere si tende a valorizzare queste differenze, per far comprendere meglio al visitatore che alcuni elementi della lista sono articoli del blog, altri invece delle pagine, altri ancora elementi personalizzati.

Importante è che la lista dei contenuti sia coerente, e offra una navigazione piacevole.

Per fare questo devi intervenire sui CSS, qui però entrano in ballo le tue capacità di personalizzare un tema di WordPress.

Tags: , , , , , ,

5 Risposte a “Aggiungere pagine e Custom Post Types al blog di WordPress”

  1. claudiagallicoach 21 Apr 2016 at 20:58 #

    Ciao Rob, rieccoti ancora (ho cercato “wordpress visualizzare gli articoli del blog in portfolio” :-D)
    Costruendo la pagina Blog con DIVI mi piacerebbe usare la visualizzazione del portfolio però da quanto ho capito, la sezione portfolio mi mostra solo i “progetti”. C’è questa dicitura nel modulo “portfolio larghezza piena”:

    Includi Categorie:

    Al momento non ci sono progetti assegnati a te in questa categoria.

    Seleziona le categorie che vuoi includere nel feed

    (non l’ho capita in verità)

    Volevo chiederti.. Che differenza c’è tra articoli e progetti? E nel caso ci fosse.. tu conosci un modo per visualizzare gli articoli nel portfolio?

    Grazie in anticipo!

    • Roberto Rota 21 Apr 2016 at 21:38 #

      Ciao Claudia, i portfolio sono dei Custom Post Type creati ad arte, che nel tuo caso sono stati chiamati “Progetti”.

      Tecnicamente articoli e progetti sono la stessa cosa, ma il loop di WordPress cerca solo gli articoli, e nelle pagine dei Progetti invece il loop cerca ed elenca solo quelli.

      Certo è possibile fare in modo che al posto dei progetti cerchi gli articoli, ma c’è diverso lavoro da fare a seconda da come viene generato il loop.

      rob

      • claudiagallicoach 21 Apr 2016 at 21:52 #

        Grazie Rob, sempre velocissimo 😀
        Quindi nel caso decidessi di organizzare la pagina blog con il modulo portfolio posso tranquillamente usare i Custom Post Type “progetti” al posto degli articoli, giusto?

        Grazie…

        • Roberto Rota 21 Apr 2016 at 21:59 #

          Se i progetti soddisfano le tue richieste sì, puoi provare, ma i custom post type possono essere soggetti a limitazioni, o vincolati al tema che stai usando, in futuro potrebbero crearti problemi.

          rob

          • claudiagallicoach 21 Apr 2016 at 22:07 #

            Sì, ci stavo pensando.. anche solo la casella ‘cerca’ (li trova, non li trova) o l’elenco delle categorie nella barra laterale (non ho ancora guardato se li integra). Per quel che riguarda il tema… ma chi lo molla più DIVI? 🙂

            Grazie ancora!

Dubbi o suggerimenti? Lascia un commento!

I love Instagram