back to top

WordPress: Custom Post Type, cosa sono e come crearli

Nonostante qualcuno pensi che WordPress sia una semplice piattaforma di blogging, in realtà oggi è un sistema molto evoluto che permette di realizzare blog, siti web, portali e praticamente qualsiasi tipo di risorsa per il web.

Questo perché, nel tempo, sono stati introdotti una serie di strumenti che permettono la modifica e l’ampliamento delle funzionalità di base del CMS dando la possibilità agli sviluppatori prima e agli utilizzatori poi di utilizzare la piattaforma WordPress per fare praticamente di tutto. Non è infrequente, infatti, che WP venga utilizzato per creare siti di E-commerce, Community, siti di Video Sharing e molto altro ancora.

Gran parte di questa flessibilità è data dalla possibilità di creare Custom Post Type ed in quest’articolo vedremo cosa sono, come utilizzarli e come crearli, con e senza l’ausilio di plugin aggiuntivi.

Prima di parlare dei Custom Post Type, però, è necessario soffermarsi un attimo spiegando cosa sono i Post Type in WordPress.

Cosa sono i Post Type

Tutti i vari contenuti che possiamo inserire in un sito WordPress sono memorizzati in strutture dati che sono divise in Post Types. Il singolo elemento è chiamato post e può essere, appunto, di diverso tipo. Di seguito le tipologie supportate nel core di WP:

  • Posts
  • Pages
  • Attachments
  • Revisions
  • Navigation Menus
  • Custom CSS
  • Changesets

Posts e Pages sono i tipi con cui entriamo subito in contatto e quindi sicuramente già li conosciamo.

I primi rappresentano gli articoli che scriviamo nel blog, che vengono poi visualizzati sul sito in ordine cronologico inverso (dal più recente al meno recente). Possono essere reaggruppati tramite le categorie ed i tag.

I secondi sono simili come contenuto ma sono dei contenuti a se stanti. Non hanno una gerarchia cronologica ma si può creare una struttura gerarchica tra Pagine e Sotto-Pagine. Solitamente sono utilizzate per i "contenuti statici" del sito (ad esempio la pagina "Chi Siamo" o "Servizi" di un ipotetico sito aziendale).

Gli Attachments contengono informazioni su qualsiasi supporto caricato sul sito: immagini, video, audio, documenti di qualsiasi tipo. Per ogni allegato caricato in un post sarà quindi disponibile un post di tipo Attachments in cui sarà possibile visualizzare e modificare le informazioni e il contenuto dell’allegato stesso.

Le Revisions sono un tipo di post particolarmente importante in quanto vengono utilizzate per creare una cronologia di altri tipi di post quando vengono fatte delle modifiche.

Revisioni

In pratica si tratta di copie che vengono create quando si modificano post e contenuti vari che si creano gni volta che si effettua una modifica: in questo modo, in caso di errori, sarà sempre possibile tornare alle versioni salvate in precedenza senza correre il rischio di perdere il lavoro a causa di una svista surante la fase di editing.

I Navigation Menus in WordPress sono elenchi di collegamenti che possono essere utilizzati per spostarsi nel sito web. Questi elenchi possono essere inseriti in varie posizioni del sito (ad esempio all’interno della navbar o del footer) e sono utilizzati per la navigazione da parte dei visitatori.

I Custom CSS (o CSS personalizzati) sono un tipo di contenuto specifico del tema e vengono utilizzati per memorizzare le regole di stile della schermata CSS aggiuntivo (ogni tema può avere il proprio post CSS personalizzato, ma viene effettivamente utilizzato solo il post dei temi attivi).

I Changeset sono simili alle revisioni ma si riferiscono specificamente al sistema di personalizzazioni del tema di WordPress. Quando infatti si effettuano delle modifiche sull’aspetto del tema tramite lo strumento Customizer (Personalizza) WordPress tenterà di mantenere traccia delle modifiche durante la sessione utente e tenterà di ripristinarle se si dovesse terminare la sessione corrente in modo inaspettato.

I Custom Post Type

I tipi di post visti nel paragrafo precedente sono un modo per classificare diversi tipi di contenuto in WordPress.

Come abbiamo visto coprono già diverse esigenze base di un blog ma per estendere le possibilità del sito si potrebbe la necessità di avere una suddivisione in altre categorie (type) ed è qui che entrano in gioco i Custom Post Type (CPT).

Custom Post Type: esempio pratico di utilizzo

L’esempio più immediato con cui spesso si è venuti a contatto con i Custom Post Type è quello del portfolio lavori.

Se vi è capitato di installare un tema per la realizzazione di un sito aziendale, ad esempio, probabilmente al suo interno avrete trovato una sezione portfolio: si tratta di una sorta di elenco dei lavori realizzati dall’azienda a titolo di testimonianza delle cose fatte.

Solitamente si tratta di elenchi caratterizzati da immagini e da una serie di informazioni (ad esempio: committente, data di realizzazione, materiali, tecnologie, ecc.) che vengono visualizzati sempre allo stesso modo.

Questo tipo di contenuti è realizzato, appunto, mediante l’utilizzo dei CPT!

In pratica all’interno del tema è stato creato un nuovo tipo di post (ad esempio "Portfolio") caratterizzato da una serie di dati aggiuntivi che vengono poi gestiti e visualizzati in un certo modo all’interno del motore WordPress. La particolarità dei Custom Post Type riguarda non solo il Frontend ma anche il Backend: per compilare / scrivere questo nuovo tipo di post, infatti, non si andrà nell’area dedicata ai Post o alle Pagine, ma direttamente nell’area Portfolio… cioè una sezione ad hoc all’interno della bacheca di WordPress.

Ambiti applicativi dei Custom Post Type

Allo stesso modo del Portfolio si può creare qualsiasi tipo di post a seconda di quello che dobbiamo realizzare: può essere un tipo che rappresenta il prodotto all’interno di un ecommerce, può essere un tipo che rappresenta un profilo utente avanzato in un social o qualsiasi altra cosa.

I dati aggiuntivi che si vogliono collegare al CPT sono detti custom field (nell’esempio precedente il committente, la data di consegna del lavoro, ecc.) sono i custom field del nostro CPT "Portfolio".

I post di un certo CPT, vengono archiviati nello stesso modo in cui vengono archiviati i post standard (e le pagine, ecc.) e la potenza di questo sistema è proprio questa: essendo gestiti da WordPress allo stesso modo di un qualsiasi post non c’è praticamente limite a quello che si può fare.

Oltre a questo va fatta una ulteriore considerazione.

I post di un certo CPT possono essere inseriti in categorie ed avere dei tag esattamente come i post tradizionali ma è possibile anche creare delle tassonomie (categorizzazioni) personalizzate, al fine di organizzare meglio tali contenuti.

Attraverso i Custom Post Type, in altre parole, è possibile gestire tramite il CMS oggetti di vario tipo e per varie finalità: prodotti, persone, attività, progetti, ecc.

Nei paragrafi successivi vedremo come creare ed utilizzare i Custom Post Type all’interno del nostro sito basato su WordPress.

Creare e gestire i Custom Post Type

Come spesso succede con WordPress, ci sono diversi approcci per fare le cose:

  • utilizzare plugin;
  • mettere mano al codice.

E’ appena il caso di ricordare che la seconda opzione dovrebbe essere riservata agli utenti esperti: modificare il codice non è attività banale e può compromettere il funzionamento del sito.

Utilizzare plugin per gestire i Custom Post Type

Il metodo più semplice per chi non ha dimestichezza con la programmazione è ovviamente quello di usare dei plugin.

I plugin più utilizzati per questo scopo sono fondamentalmente due: Custom Post Type UI e POD.

Custom Post Type UI

Uno dei plugin più usati (con quasi un milione di installazioni attive) ed affidabile è senza dubbio Custom Post Type UI.

Custom Post Type UI

Il plugin è presente nella directory di WordPress.org ed è quindi installabile direttamente dal pannello amministrativo di WordPress.

Una volta installato ed attivato nel menu principale dell'area amministrativa del nostro sito sarà presente un nuovo blocco di voci: CPT UI appunto.

Amministrazione di CPT UI

La prima voce Aggiungi/Modifica tipi di Contenuto è quella che permette di creare un nuovo Custom Post Type o modificarne uno esistente.

La pagina in cui si arriva è divisa in blocchi:

Creare un CPT con CPT UI

Il primo contiene le informazioni di base indispensabili per la creazione di un CPT. Nel dettaglio i dati da inserire sono i seguenti :

  • lo slug per il tipo di post type che stiamo andando a creare che verrà utilizzato nell'URL e nelle query di WordPress, quindi può contenere solo lettere e numeri;
  • un identificativo plurale e singolare per il CPT che sono utilizzati quando vengono richieste delle etichette per i Custom Post Type.

Il secondo blocco contiene le Etichette Aggiuntive che verranno utilizzate in vari punti del sito.

Queste vanno compilate singolarmente perché ognuna ha un significato ed una posizione diversa, tuttavia possono essere compilate in modo automatico facendo click sull’ultimo link presente nel blocco precedente “Populate additional labels based on chosen labels”. Così facendo verranno riempiti tutti i campi delle etichette automaticamente.

Il terzo blocco “Impostazioni” definisce il comportamente del nuovo CPT all’interno del sito.

Ogni opzione viene fornita con una breve descrizione che spiega cosa fa.

In particolare è possibile specificare se il CPT sarà pubblico o meno, se sarà ricercabile pubblicamente o meno. Poi ci sono anche altre impostazioni (un po più tecniche) e alla fine si arriva all'opzione per selezionare le funzionalità di modifica che questo tipo di post supporterà. E’ sufficiente selezionare le opzioni che si desidera includere.

Impostazioni di CPT UI

In questa fase possiamo, ad esempio, decidere se il nuovo CPT richiede un Titolo o l’Immagine in Evidenza (come succede per i normali post), le revisioni, i commenti o altre funzionalità standard del CMS.

Facendo click sul pulsante in basso “Aggiungi il tipo di Contenuto” i dati che abbiamo inserito saranno salvati e verrà creato il nuovo CPT.

Per capire meglio facciamo un esempio: supponiamo di gestire un sito di recensioni di Dischie di aver quindi creato il tipo Disco; una volta salvato il tutto, oltre alle normali voci Articoli, Pagine, Categorie, Media ecc ecc, nel menù principale dell'area di amministrazione di WordPress troveremo anche la voce "My Dischi" (l’etichetta inserita automaticamente in precedenza).

Voce di menu del nuovo CPT

Partendo da questa voce sarà poi possibile inserire un nuovo contenuto di tipo Disco.

Facendo click su Add new si arriverà ad una pagina di creazione/modifica contenuto del “Disco”. Di base la pagina sarà uguale a quella di creazione degli articoli a meno che non abbiamo modificato alcune delle impostazioni relative al CPT creato.

Tutti i contenuti di questo tipo saranno visualizzate nella pagina “Tutto Dischi” così come tutte le pagine del sito sono sotto la voce Pagine.

Pods – Custom Content Types and Fields

Pods ha sicuramente meno installazioni attive rispetto al precedente ma ha un numero maggiore di commenti positivi da parte dei suoi utilizzatori (e questo non è un aspetto da sottovalutare).

PODS

Come per il plugin visto visto prima, Pods offre un’interfaccia che permette di creare e registrare un custom post type senza scrivere codice ma la funzionalità più interessante è quella che consente di estendere le funzionalità di elementi già esistenti Post, Pagine, Categorie, Tag, Media, Utenti etc.

E’ possibile quindi aggiungere campi extra a un tipo di post o tassonomia esistente e modificarne le impostazioni. Ciò rende molto più semplice e veloce la creazione di nuovi Custom Post Type.

Ogni elemento creato verrà chiamato semplicemente POD.

Una volta creato il POD si possono aggiungere i campi personalizzati singoli e multipli ed è possibile impostare diversi tipi di campi: testo, area testo, data, numero, colore etc.

La creazione di un Custom Post Type con PODs è analoga a quella di Custom Post Type UI: si tratta fondamentalmente di assegnare il nome e le varie etichette da usare nel sito e fare alcune configurazioni ma in questo caso con un’interfaccia progettata per guidare meglio l’utente attraverso le fasi del processo di creazione.

Aggiungere in CPT con PODs

Creare Custom Post Type attraverso il codice PHP

Come succede sempre con WordPress, il metodo più avanzato per raggiungere un obiettivo è quello di mettere mani al codice ed anche in questo caso è così.

Il framework WordPress ha una serie di strumenti che consentono agli sviluppatori di creare e registrare facilmente un Custom Post Type senza dover ricorrere a plugin che hanno sì il grosso vantaggio di semplificare il lavoro ma si portano dietro, spesso, un certo fardello in termini di "pesantezza" (con ricadute sulle performances del sito).

Quello che si fa in pratica è richiamare delle funzioni che fanno quello che i plugin permettono di fare con le loro interfacce visuali.

Come raccomandato anche nel sito ufficiale dedicato agli sviluppatori WordPress va ricordato che non bisognerebbe mai modificare il codice di WordPress in quanto eventuali aggiornamenti del CMS comporterebbero, inevitablmente, la perdita delle modifiche apportate.

Quello che si fa, quindi, è agire sul file functions.php (presente all’interno del tema in uso) per apportare delle modifiche al funzionamento di WordPress senza alterarne in alcun modo il sorgente.

Per registrare un nuovo tipo di post bisogna usare la funzione register_post_type().

L'esempio seguente fa il minimo indispensabile e registra il nuovo tipo di post, Disco, identificato nel database come "mywp_disco".

Il nuovo tipo sarà identificato dalle etichette Disco (al singolare) e My Dischi (al plurale) e sarà pubblicamente accessibile.

Il parametro has_archive impostato a true permetterà, come vedremo nel paragrafo successivo, che i nuovi contenuti siano raggiungibili dai visitatori del sito.

function my_custom_post_type() {
  register_post_type('mywp_disco',
    array(
      'labels' => array(
        'name' => __('My Dischi', 'textdomain'),
        'singular_name' => __('Disco', 'textdomain'),
      ),
      'public' => true,
      'has_archive' => true,
      'rewrite' => array(
        'slug' => 'disco'
      )
    )
  );
}
add_action('init', 'my_custom_post_type');

In questa porzione di codice, la prima parte definisce la funzione my_custom_post_type (che effettivamente esegue la creazione/registrazione del CPT) mentre in coda (mediante il metodo add_action()) viene agganciata la stessa funzione all’evento init in modo che sia caricato ogni volta che una istanza di WordPress viene creata.

La porzione di codice qui sopra, come già detto, deve essere inserita nel file function.php del tema raggiungibile via FTP oppure da pannello di controllo al percorso:

Aspetto -> Editor
Editor del Tema

Solo con queste poche righe abbiamo avuto il risultato che volevamo. Ora Il nostro sito gestisce il nuovo tipo di post e lo si può subito vedere perché una volta salvate le modifiche nella barra laterale sarà presente la voce di menu relativa al nuovo CPT esattamente come era avvenuto prima con il plugin.

CPT Creato

Facendo click sulla nuova voce My Dischi si arriverà quindi nella pagina dove vengono elencati tutti i contenuti di tipo "Disco" (ovviamente inizialmente l’elenco è vuoto).

Gestione dei nuovi tipo di post

Da qui in avanti si possono creare nuovi “articoli” di tipo "Disco" esattamente come facciamo abitualmente con pagine e post

Facendo click su Aggiungi Nuovo quindi si arriverà ad una pagina di creazione/modifica:

Aggiunta di un Post

Visualizzare un Custom Post Type

Ora che abbiamo creato un nuovo tipo di post personalizzato qualsiasi utente che può creare contenuti sarà in grado di caricare dei nuovi Dischi all’interno del nostro sito. Vediamo ora come rendere visibile questo nuovo tipo di contenuto per i visitatori del sito!

Ci sono molti modi per visualizzare i contenuti di un Custom Post Type in modo personalizzato a secondo delle esigenze, ma quello più immediato è quello di offrire una consultazione tramite le pagine standardv di archivio di WordPress.

Grazie al parametro 'has_archive' possiamo usare nei link del sito lo slug con il quale abbiamo registrato il CPT per creare elenchi dinamici di questo nuovo CPT.

Supponiamo che il nostro sito sia mysito.it e WordPress sia stato configurato per generare i permalink; una volta creati i tutti i contenuti saranno disponibili all’indirizzo:

mysito.it/disco/

Se il nostro sito non usa permalink SEO friendly, l’URL del tuo post personalizzato sarà, invece, simile a questa:

mysito.it/post_type=disco

Il risultato sarà analogo: accedendo a questa URL verrà mostrato l’elenco degli articoli di tipo "Disco".

Conclusioni

Abbiamo visto in questo articolo cosa sono i Custom Post Type, come si aggiungono ai post tradizionali di WordPress, come possono essere creati ed usati sia tramite plugin che modificando il codice manualmente.

Abbiamo visto altresì in che modo possono essere usati e visualizzati all’interno del nostro sito.

I possibili utilizzi dei CPT sono molteplici, basti pensare che gran parte dei plugin più elaborati ed usati su WordPress li utilizzano costantemente: ad esempio WooCommerce, il famoso plugin per la creazione di e-commerce su WordPress, sfrutta i CPT per gestire tutti gli oggetti che ruotano all’interno del suo sistema di commercio elettronico.

Come già accennato molti template gestiscono diversi tipi di articoli che poi vengono visualizzati in modo differente e questo viene fatto tramite CPT.

Ovviamente questa può essere considerata coma un'introduzione in quanto sono tantissimi gli aspetti da approfondire per gestire al meglio uno degli strumenti più potenti che WordPress mette a disposizione.

Pubblicitร 

Leggi anche...

Clonare un sito WordPress

Esistono diverse ragioni per cui potrebbe essere utile clonare...

Disabilitare i commenti in WordPress

Una delle caratteristiche da sempre più apprezzate nei siti...

Mettere in sicurezza WordPress: proteggere la cartella wp-admin da accessi non autorizzati

Vediamo come implementare una maggior sicurezza all'interno del nostro...

Mettere WordPress in manutenzione senza usare plugin

Quando si deve mettere in manutenzione un blog basato...

Password WordPress dimenticata: come risolvere il problema

Come capita spesso per altre password, anche quella per...

Come disabilitare, limitare o cancellare le revisioni in WordPress

Le "revisioni" sono una funzionalitร  molto interessante di WordPress,...
Pubblicitร