Creare siti con WordPress Plugin WordPress WordPress

Come creare Custom Post Type e tassonomie personalizzate su WordPress

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

In questo video ti mostro come creare Custom Post Type e Custom Taxonomies su WordPress utilizzando il plugin gratuito Custom Post Type UI.

Creare Custom Post Type e tassonomie personalizzate su WordPress
play-rounded-fill

Creare Custom Post Type e tassonomie personalizzate su WordPress

A cosa servono i Custom Post Type

Oltre ai tipi di contenuto standard previsti da WordPress, è possibile creare post type personalizzati (chiamati anche 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… Questi sono classici casi di Custom Post Type.

I CPT sono molto utili quando hai la necessità di gestire contenuti sul tuo sito che non 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.

Custom Taxonomies (Tassonomie personalizzate)

Oltre ai Custom Post Type è possibile creare anche delle Custom Taxonomies, o tassonomie personalizzate.

Queste tassonomie personalizzate 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.

Si tratta, in pratica, di un modo per organizzare e classificare i contenuti.

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

Custom Fields (Campi personalizzati)

Dopo aver introdotto il tema dei Custom Post Type e delle tassonomie personalizzate (custom taxonomies), è il caso di parlare anche dei Custom Fields, o campi personalizzati. Ti capiterà spesso di vedere associati questi tre argomenti e la cosa è abbastanza normale.

Quando infatti inizi a creare un contenuto personalizzato è 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.

Nel video presente in questa pagina 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.

Oltre a Custom Post Type UI, altri plugin che permettono di creare facilmente Custom Post Type e tassonomie personalizzate sono:

Se ti interessa saperne di più sui post type di WordPress, nel glossario trovi una pagina dedicata ai post type di WordPress.

18 commenti su “Come creare Custom Post Type e tassonomie personalizzate su WordPress”

  1. Sarei interessata a creare dei campi personalizzati nei post di wordpress, come dici nella pagina https://www.fogliata.net/custom-post-type-wordpress/ specificando che ne parlerai in un prossimo post. Lo hai già fatto?

    Rispondi
    • Ciao Chiara, un esempio lo puoi trovare in questo post: https://www.fogliata.net/sottotitolo-post-wordpress/
      Più in dettaglio però ne parlerò in un prossimo articolo.

      Rispondi
      • Grazie. Domanda: se io utilizzo wordpress.COM e passassi il piano Business (wp dichiara che mi consente di utilizzare plugin di terze parti) potrei effettivamente avere questa funzionalità?

        Rispondi
        • Può darsi, non ho però esperienza con l’utilizzo del piano business su wordpress.com. Quindi non so quanto si possa o non si possa fare.

          Rispondi
  2. 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
  3. 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
  4. 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
  5. 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
  6. Grazie Tiziano dei tutorial. Hai mai fatto un tutorial per creare uno specifico ruolo che gestisca solo un custom post type? ad Esempio: CPT Books, Visibile e gestibile solo dall’user role “Bibliotecario”? Probabilmente questo utente è già anche Editor?
    Grazie mille in anticipo comunque.

    Rispondi
  7. Ciao Tiziano, grazie per la tua guida.
    Ho una domanda, con “Custom Post Type UI” come si può nascondere dallo slug la tassonomia genitore? Il corrispettivo di /categoria/ per intenderci.
    Normalmente dai permalink di Wp basta aggiungere ‘.’
    In questo caso aggiungendolo a “Rewrite” restituisce un errore 404.

    Grazie in anticipo!

    Rispondi
    • Puoi provare a impostare / come “Slug personalizzato per rewrite” e poi a impostare “Rewrite con Front” su Falso. Eventualmente poi aggiorna i permalink. Rimuovere lo slug può ovviamente generare conflitti con altre tassonomie o con altri post che incidentalmente potrebbero avere lo stesso titolo.

      Rispondi
      • Ciao Tiziano, grazie per la risposta.
        Si, è proprio quello che avevo fatto, ma non funziona, pensavo di sbagliare.
        Continua a mostrarlo, forse c’è un bug.
        Se invece inserisco il “.” scompare ma restituisce errore 404.
        Grazie

        Rispondi

Lascia un commento