Come creare post type e tassonomie personalizzate su WordPress per gestire al meglio i tuoi contenuti

Scritto da Tiziano Fogliata
Aggiornato il

I Custom Post Type, conosciuti anche come CPT o Post Personalizzati, sono una delle funzionalità che hanno reso WordPress un Content Management System così popolare per la realizzazione di siti molto differenti dai tradizionali blog.

WordPress è un CMS (Content management system) piuttosto flessibile che ben si adatta alla realizzazione di diverse tipologie di sito. Blog, magazine, siti aziendali, e-commerce e molte altre soluzioni sono, più o meno facilmente, realizzabili partendo da un’installazione di WordPress.

Se però hai la volontà, o la necessità, di spingerti un po’ oltre, perché le classiche due tipologie di contenuti (articoli e pagine) messe a disposizione da WordPress non ti bastano, devi entrare nel mondo dei Custom Post Type.

Prima di vedere come creare un nuovo CPT ( alla fine di articolo trovi un video nel quale ti spiego come creare Custom Post Type su WordPress ) voglio spiegarti cosa sono e perché possono essere utili. È bene precisare che WordPress dispone di alcuni Post Type di default, ossia già presenti disponibili quando installiamo questo CMS. I più comuni sono ad esempio:

  • gli articoli (post type: “post”)
  • le pagine (post type: “page”)
  • i file media (post type: “attachment”)
  • le revisioni (post type “revision”)
  • le voci di menu (post type: “nav_menu_item”)

Nell’immagine sottostante puoi vedere la classica tabella wp_posts del database di WordPress nella quale sono evidenziati i vari post type (custom e di default) presenti su quel sito.

Oltre a questi WordPress permette la creazione di post type personalizzati, ossia i CPT. Probabilmente ti sarà capitato, dopo aver installato alcuni temi per WordPress, di veder comparire nel menu di amministrazione alcune voci come ad esempio Portfolio, Testimonianze… Ecco, questi sono classici casi di Custom Post Type.

Come gli esempi relativi al Portfolio e alle Testimonianze possono lasciare intuire, i CPT sono estremamente utili quando hai la necessità di gestire contenuti sul tuo sito che difficilmente rientrano nelle classiche tipologie articolo o pagina.

Gli articoli e le pagine in un sito WordPress sono tipi di contenuto piuttosto flessibili, ma ci sono casi nei quali è necessario, o semplicemente più logico, creare un tipo di contenuto dedicato.

Immagina ad esempio di voler creare delle voci di un glossario. Ogni singola voce del glossario non ha senso che sia ordinata in ordine cronologico come gli articoli, però potrebbe aver bisogno di essere inserita in una categoria (cosa che le pagine non permettono). Ecco quindi un classico esempio di contenuto non adatto né agli articoli né alle pagine.

Fino ad ora nascosto un altro “segreto” di WordPress che però ti svelo subito: oltre ai Custom Post Type è possibile creare anche delle tassonomie personalizzate. Con WordPress puoi infatti creare tassonomie che si comportano come le Categorie (ossia con un ordine gerarchico) oppure come i Tag (quindi senza alcun ordine gerarchico) da associare ai vari Custom Post Type, oppure da aggiungere ai tradizionali post type di WordPress.

Potresti ad esempio creare un Custom Post Type denominato “film”, da utilizzare per inserire le recensioni dei tuoi film preferiti e accompagnare questo CPT con una tassonomia personalizzata denominata “generi”, così da poter organizzare i film in base al loro genere (fantascienza, thriller, horror…). Potresti creare inoltre un ulteriore tassonomia denominata “nazioni” con la quale organizzare i film anche in base alla loro nazionalità.

Giusto per non farci mancare nulla e per aggiungere ancora un po’ di carne al fuoco, dopo aver introdotto il tema dei Custom Post Type e delle tassonomie personalizzate (custom taxonomy), è il caso di parlare anche dei campi personalizzati (custom field). Ti capiterà spesso di vedere associati questi tre argomenti e la cosa è abbastanza normale.

Quando infatti inizi a creare un contenuto personalizzato è molto probabile che tu abbia l’esigenza di creare anche delle categorie o dei tag personalizzati, in modo da raccogliere e organizzare più facilmente il nuovo contenuto. Inoltre è altrettanto probabile che la nuova tipologia di contenuto possa aver bisogno di campi aggiuntivi per inserire le informazioni, campi aggiuntivi rispetto ai classici titolo e contenuto che utilizzi per gli articoli e le pagine.

Tornando all’esempio del CPT “film”, potrebbe aver senso disporre di un campo nel quale inserire l’anno di uscita del film, di un campo nel quale scrivere la durata del film…

Disporre di campi aggiuntivi ti consente di organizzare, gestire e presentare meglio le varie informazioni associate singolo film. Decisamente meglio rispetto ai inserire tutti i dati in un’unica area di testo, come si fa con le pagine con gli articoli.

Potresti infatti avere la tentazione di gestire questi dati aggiuntivi usando il classico formato articolo, inserendo tutte le informazioni relative al film all’interno di un’unica area di testo, come se fossero il contenuto di un post.

Tale opzione però non è ottimale se hai in previsione di inserire un numero elevato di contenuti. Non ti permetterà infatti di gestire in modo efficiente le varie informazioni, dato che sono tutte inserite in un unico campo. Quindi non potrai sfruttarle per filtrare e ordinare i tuoi contenuti e non potrai nemmeno estrarle singolarmente per presentare i contenuti come meglio desideri. In poche parole: ti sconsiglio questa strada.

Dopo questa necessaria introduzione vediamo quindi come creare queste tipologie di contenuto personalizzate.

Per creare questi Post Personalizzati esistono fondamentalmente due alternative: la prima consiste nel creare a mano il codice (da richiamare nel file functions.php del tuo tema oppure sotto forma di plugin creato ad hoc), la seconda è quella di appoggiarsi a dei plugin specializzati per questo compito. Questa seconda opzione è ovviamente molto più semplice e permette anche anche agli utenti meno tecnici di sfruttare le incredibili potenzialità dei Custom Post Type.

Creare un CPT è molto semplice, grazie ad esempio a un plugin come Custom Post Type UI. Questo plugin gratuito facilita notevolmente la creazione di Custom Post Type e di tassonomie personalizzate, ma non è di alcun aiuto per quel che riguarda la creazione dei custom field. Inoltre Custom Post Type UI, almeno nella sua versione gratuita, non si occupa di come personalizzare l’aspetto dei CPT nel tema del tuo sito WordPress. Per fare questo è necessario mettere mano al codice del tuo tema oppure ricorrere ad altre soluzioni che ti mostrerò in un prossimo post che pubblicherò tra qualche giorno.

In questo video ti mostro come utilizzare Custom Post Type UI per aggiungere Custom Post Type e tassonomie personalizzate in un sito WordPress:

Come hai visto la possibilità di creare Custom Post Type amplia di molto il ventaglio delle possibilità offerte da WordPress. Un esempio è quello di un sistema personalizzato per gestire le recensioni sul tuo sito.

Scarica l'ebook gratuito sui 10 errori da evitare sul tuo sito WordPress

Se ti è piaciuto e hai trovato utile questo articolo, eccone altri che potrebbero interessarti

Nessun articolo correlato

13 commenti su “Come creare post type e tassonomie personalizzate su WordPress per gestire al meglio i tuoi contenuti”

  1. Ciao Tiziano, complimenti per questa guida e per le tante altre sempre molto utili che hai scritto. Vorrei farti una domanda: mettiamo che un blog che tratti di auto volesse aggiungere un contenuto tipo “il gadget lifestyle della settimana” pensando che chi ama le auto potrebbe essere interessato anche a quel mondo. Si tratterebbe di pubblicare un post la settimana con una solo foto e poche righe di informazione, un mini contenuto insomma. Visto che non sarebbero degli articoli approfonditi e fuori dal topic principale, tu creeresti una sezione a parte del blog (auto) tramite CPT oppure aggiungeresti una categoria mettendola tra tutte quelle che trattano le quattro ruote?! Grazie mille in anticipo!

    Rispondi
    • Ciao Roberto, trovo decisamente più sensato utilizzare una categoria aggiuntiva piuttosto che complicarti la vita con un nuovo CPT.

      Rispondi
  2. Ciao Tiziano e prima di tutto complimenti per il sito e grazie per le guide, le ho trovate illuminanti. Premesso che non sono un programmatore, mi trovo a dover pensare in fretta a cosa utilizzare per risolvere il mio problema di avere aree riservate in funzione del profilo utente (come se fossero più siti nello stesso dominio, profili utenti molto diversi tra loro ma per lo stesso argomento tipo… medico da un lato e paziente dall’altro che, entrambi usano l’ “aspirina” ma evidente che hanno profili e “linguaggi” diversi ) Pensavo di farlo con i vari plugin che trovo in in rete: 1. Custom Post Type (ragione di questo commento) , 2. Ultimate member, 3.Simply membership, oppure 4. altro che non conosco… cosa mi suggeriresti?
    un grazie anticipato e …buone vacenza a tutti!
    Graziano

    Rispondi
    • Ciao Graziano. Sul sito ho già scritto di Toolset e delle funzionalità di questo plugin per la creazione di Custom Post Type e viste personalizzate. Grazie però a un altra funzione di questo plugin è anche possibile impostare permessi di accesso diversificati ai vari contenuti. Non so se può essere la soluzione adatta a te, ma ti consiglio di dargli un’occhiata.

      Rispondi
  3. Ciao Tiziano, intanto grazie per la tua chiarezza. Vorrei farti un paio di domande: 1° come eliminare un CPT (ho fatto diverse prove ora mi ritrovo quelle che non mi servono più e non so come fare per eliminarle); 2° come fare per visualizzare i singoli post in un’unica pagina. Sto creando un Custom Post Type per le FAQ e vorrei che ogni singolo post venisse visualizzato automaticamente nella pagina FAQ presente nel menu principale del sito. Grazie in anticipo!
    Giuliana

    Rispondi
    • Ciao Giuliana, se hai usato CPT UI, basta andare nella sezione “Aggiungi/Modifica tipi di contenuto” e puoi modificare o eliminare i CPT creati in precedenza.

      Se vuoi visualizzare tutti i CPT creati in un’unica pagina devi lavorare a livello di codice creando dei template specifici, oppure usi una soluzione come Toolset o CPT UI Extended (quest’ultima non l’ho mai usata).

      Rispondi
  4. Ciao Tiziano grazie per il tutoria. Non avendo al funzione GP Hook, come posso fare? Dove inserisco il codice e sopratutto da dove lo prendo? Grazie

    Rispondi
    • Ciao, il codice per la nuova tassonomia viene essere generato dal plugin Custom Post Type UI. Gli hook di GeneratePress sono disponibili solo se usi questo tema, altrimenti devi ricorrere agli hook standard di WordPress o a quelli eventualmente messi a disposizione dal tuo tema. Se però non hai mai messo mano a un file php, ti sconsiglio di fare questo tipo di interventi senza prima approfondire la conoscenza di come funziona WordPress.

      Rispondi

Lascia un commento