Custom Post Type Cosa Sono e Come Utilizzarli

Custom Post Type: Cosa Sono

I Custom Post Type sono un altro utilissimo strumento che WordPress ci mette a disposizione e grazie al quale possiamo espandere la struttura del nostro WordPress in modi impensabili! Andiamo a scoprire cosa essi siano, ma sopratutto come poterli sfruttare all'interno dei nostri progetti.  

Quest’oggi andiamo a vedere da vicino cosa siano, ma sopratutto come sia possibile sfruttare, i Custom Post Type. Traducendo la descrizione presente nel WordPress Codex possiamo leggere:

Con Post (che in italiano chiamiamo comunemente articolo) ci riferiamo ad una serie di dati differenti strutturati che vengono mantenuti all’interno di apposite tabelle presenti nel database utilizzato da WordPress. I Custom Post Type ci permettono di creare facilmente dei dati strutturati per uno specifico scopo come ad esempio podcast, librerie video, portfolio e praticamente qualunque altro tipo di dato che ci possa venire in mente!

In questo articolo scoprirai come integrare i Custom Post Type nel backend di WordPress ma se vuoi scoprire anche come visualizzarli nel tuo frontend vieni a leggere il nuovo articolo!



Quindi grazie a questa nuova caratteristica saremo in grado di creare degli articoli specifici per qualsivoglia scopo offrendo agli utilizzatori del tema una facile voce presente all’interno del pannello di amministrazione di WordPress. Questo significa che non dovremmo più appoggiarci a dei plugin che ci permettano ad esempio di creare un nuovo elemento per il nostro portfolio!

Definiamo il Progetto

Come qualsiasi altro progetto anche questo merita una pausa riflessiva. Ovvero abbiamo capito che è possibile creare un determinato post per qualsivoglia articolo ma quale sarà il tipo di articolo che vogliamo creare in questo progetto?

Per questo nostro esperimento andremo a modificare il template di base Twenty Eleven creando:

  • un Custom Post Type in grado di ospitare articoli definiti come elementi di un portfolio;
  • una tassionomia personale per i nostri tipi di articoli;
  • una pagina template in grado di mostrare i nostri nuovi articoli nella loro bellezza.

Registriamo il Custom Post Type

Eccoci giunti alla parte più interessante, ovvero dove potremmo andare a dire a WordPress che siamo intenzionati a creare un nuovo custom post type, come vogliamo chiamarlo e altre configurazioni che ci saranno utili in corso d’opera. Ma per poter fare tutto questo dobbiamo editare il file functions.php con il nostro fedele Aptana Studio! Quindi posizioniamoci all’interno della cartella del template Twenty Eleven e raggiungiamo la fine del file dove andremmo ad inserire quanto segue:

Come ormai WordPress ci ha abituato tendenzialmente dobbiamo conoscere due cose, il trigger che farà lanciare la nostra funzione, in questo caso l’azione admin_init, e una funzione WordPress che ci permetta di registrare il nostro nuovo elemento, in questo caso un nuovo Custom Post Type.

La funzione register_post_type() accetta due parametri, il primo è il parametro che identificherà il tipo di post che andiamo a creare tramite una abbreviazione, il secondo è un array di parametri da passare al nostro nuovo Custom Post Type. Prima di andare ad analizzare le varie voci volevo farvi notare che primo array $labels è stato incluso all’interno di $args, questo perché viste le molte voci, tutte opzionali, che potremmo aggiungere gli sviluppatori hanno ben pensato di dividere le voci che andremo ad utilizzare all’interno dei menu e pagine create appositamente per i nostri nuovi custom post type.

Siccome in questo articolo ci interesseremo soltanto della riuscita dell’esercizio, vorrei cogliere l’occasione di ricordarvi che su WordPress AndMore abbiamo una sezione Pillole che contiene una accurata pagina che spiega il funzionamento di register_post_type()[link] e analizza nel dettaglio tutti i suoi parametri. Andiamo intanto ad analizzare quelli che abbiamo utilizzato all’interno di $args:

  • public – questo argomento lavora come scorciatoia per applicare il valore booleano inserito ai seguenti publicly_queriable, show_ui, show_in_nav_menus e exclude_from_search (troverete dettagli approfonditi nella pillola[link]);
  • query_var – segue il valore booleano inserito per accettare o rifiutare una query;
  • rewrite – permette di cambiare i permalink di queste tipologie di articoli, se utilizziamo il valore booleano true ci permetterà di modificare il permalink direttamente dal pannello di amministrazione, altrimenti accetta anche un array per accettare dettagli aggiuntivi;
  • capability_type – qua possiamo definire la capability per il nuovo tipo di post. Modificando questo parametro ci servirà ad avere la possibilità di definire diversi permessi per i vari gruppi utente del sistema;
  • has_archive – permette di attivare o disattivare la possibilità di archiviare i nostri custom post type con un semplice valore booleano;
  • hierarchical – questo parametro ci permette di specificare un parente al nostro articolo con la classica modalità che utilizziamo per le nostre Pagine;
  • menu_position – permette di specificare la posizione del nostro nuovo menu grazie ad un sistema numerico, maggiori informazioni nella nostra pillola[link];
  • supports – questo parametro ci permette di specificare cosa vogliamo vedere all’interno delle finestre Aggiungi/Modifica, in questo caso specifico dichiariamo di voler vedere la sezione del titolo, il nostro editor e il caricatore di thumbnail.

Una volta inserito questo blocco di codice vi basterà aggiornare la vostra pagina e verrete presentati ai vostri nuovi e personalizzabili articoli!

Custom Post Type Menu

Aggiungiamo Campi Personalizzati

Adesso che sappiamo dove trovare i nostri nuovi tipi di articoli non ci resta altro che personalizzarli a nostro piacere aggiungendo alcuni dettagli che andranno ad arricchire le informazioni di ogni lavoro che andremo ad inserire:

  • presenteremo sicuramente la sua data di realizzazione;
  • il nome del nostro cliente;
  • il tipo di lavoro che abbiamo svolto;
  • e magari anche un link al sito del cliente.

Queste informazioni sono molto generali e dovranno essere modificate a seconda del tipo di portfolio che volete andare a creare, ma intanto guardiamo di imparare come sia possibile creare questi primi campi! Continuiamo ad aggiungere codice in fondo al nostro functions.php come segue:

Con questo blocco di codice saremo in grado di creare i nostri detagli e di iniziare ad usarli fin da subito! Ma non vi sembra il caso di capire come abbiamo fatto a realizzarlo? A questo scopo ho deciso di dividere il blocco di codice in due parti, la prima incaricata di creare e visualizzare i nostri nuovi campi, la seconda invece pensarà a gestire il processo di salvataggio dei nostri dettagli.

Parte 1: La creazione

Al primo rigo abbiamo il nostro action hook che ci permetterà di lanciare la funzione wpam_crea_box_dettagli() ogni qual volta viene utilizzata l’azione add_meta_boxes all’interno del nostro WordPress.

Come possiamo vedere la funzione wpam_crea_box_dettagli() non fa altro che permetterci di richiamare una funzione WordPress incaricata di creare il box per noi fornendogli dei semplici parametri, la funzione in questione prende il nome di add_meta_box() ed accetta i seguenti cinque parametri:

  1. id – il CSS id da aggiungere all’elemento <div> che racchiuderà il nostro meta box;
  2. title – il nome della nostra meta box da mostrare a video;
  3. callback – una funzione incaricata di mostrare la mostra meta box, nel nostro caso prende il nome di wpam_crea_dettagli;
  4. page – ovvero per quali tipi di articoli questa box dovrà essere mostrata, nel nostro caso saranno soltanto i Custom Post Type di tipo portfolio;
  5. context – ci permette di definire il contesto nel quale andare a posizionare la nostra meta box, in questo esempio abbiamo scelto di posizionarlo sul lato destro della finestra editor;
  6. priority – un valore stringa che ci permette di dire quale sia la priorità della nostra meta box, quindi se disporla in alto o in basso rispetto agli altri elementi.

Fatto questo ci siamo creati la funzione wpam_crea_dettagli() dove per prima affidiamo a delle variabili i dettagli dei nostri campi, in modo da poterli riutilizzare successivamente quando creiamo gli elementi della nostra form. Una volta creati questi elementi, tra i quali troviamo anche qualche nuovo tipo di input introdotto in HTML5, abbiamo terminato il processo di creazione e visualizzazione. Infatti se ricaricate la vostra pagina vi troverete la vostra prima meta box che vi aspetta proprio sopra la sezione Pubblica.
Creazione Meta Box

Gestiamo il Salvataggio

Avere un box così preparato non ci servirà assolutamente a niente se non andiamo a dire a WordPress che le informazioni che l’utente pubblicherà al suo interno. Per fare questo dobbiamo fare in modo che ad ogni salvataggio il nostro WordPress si ricordi di salvare le informazioni contenute all’interno dei vari campi input.

La semplicità di questo passaggio è veramente strabiliante! Possiamo vedere come sia stato semplice utilizzare l’action hook save_post che lancerà la nostra funzione wpam_salva_dettagli() che non farà altro che utilizzare la funzione WordPress update_post_meta() per inserire all’interno del nostro database le informazioni che l’utente ha inserito all’interno della nostra meta box.

Conclusioni

Adesso siamo pronti a creare una pagina in grado di visualizzare le nostre meta box e di salvarle! Ma ancora manca qualcosa non credete? Io dico che ci manca tutta la parte dove andremo a creare la pagina in grado di mostrare i dettagli aggiunti per il nostro lavoro, questo semplicemente perché abbiamo in serbo altri articoli che vi aiuteranno a comprendere al meglio il mondo di WordPress e dei suoi Custom Post Type.

Piuttosto avete notato che i nomi dei nostri post meta sono stati preceduti da un _? Abbiamo applicato questa tecnica perché altrimenti i nostri post meta sarebbero andati a presentarsi anche nel box dei custom fields che WordPress mette a disposizione dei propri utenti.

Vi aspetto su questo canale per la prossima puntata!

Lascia il tuo Pensiero

8 Responses to “Custom Post Type: Cosa Sono”

  1. Alessandro

    Ciao, ho seguito tutto passo passo ma non mi funziona, non riesco a vedere il nuovo blocco… 🙁 mi aiuti?

    Rispondi
    • Andrea Barghigiani

      Ciao Alessandra,

      io ho provato adesso a fare copia/incolla dei codici presenti nell’articolo e a me funziona tutto perfettamente. La sezione Portfolio viene creata nel mio backend, i dati per il cliente sn presenti e vengono salvati quindi non riesco a capire a cosa tu faccia riferimento…

      Abbi pazienza ma con un commento come “non funziona” non ho molti punti di riferimento per darti una mano, se provi ad essere più specifica sn più che contento di darti una mano.

      Rispondi
  2. Alessio

    Ciao Andrea, ottimo articolo era proprio ciò di cui avevo bisogno.. Non c’è la continuazione dell’articolo vero?
    Volevo sapere per mostrare i lavori nel front end il modo migliore quale può essere? Loop personalizzato? Con wp_query? In una pagina custom questo è ovvio..grazie

    Rispondi
    • Andrea Barghigiani

      Ciao Alessio, mi fa piacere che tu abbia trovato utile questo articolo. Ti devo confessare che per molto tempo non era presente il seguito di questo articolo ma Lunedì pubblicherò appunto l’articolo che spiega come creare sie le singole pagine che come andare a creare un loop personalizzato.

      Se te lo stai chiedendo, io preferisco usare le WP_Query che trovo molto più semplici da configurare e da usare, in fin dei conti è una classe che viene usata dagli stessi sviluppatori WordPress 😀

      Rispondi