Custom Post Types e Custom Fields in WordPress



WordPress

Salve a tutti, oggi vi parlerò finalmente delle due funzionalità che rendono WordPress (secondo me) il miglior CMS in circolazione sotto tutti i punti di vista, in particolare sotto due punti di vista classicamente in contrasto tra di loro: la semplicità di utilizzo da parte dell’utente finale e la semplicità di programmazione da parte dello sviluppatore.

Le due funzionalità in questione sono i Custom Post Types (documentazione ufficiale) e i Custom Fields (documentazione ufficiale).

Cerchiamo di capire prima per sommi capi e poi in modo più approfondito le caratteristiche e le possibilità offerte da ciascuna funzionalità e come poterle utilizzare per arricchire e migliorare i contenuti del proprio sito web.

CUSTOM FIELDS

WordPress custom fields

I custom fields sono quelle fastidiose e misteriose aree di testo che spesso cercate di nascondere ignorandone il significato e che qualche volta intuite che vengano utilizzate da qualche plugin precedentemente installato.

In realtà i custom fields tecnicamente e anche concettualmente sono molto più semplici di quanto possa sembrare: si tratta infatti di semplici informazioni aggiuntive associate ad un post. A seconda del vostro campo di formazione vi piacerà chiamarli campi, metadati, attributi, etc. ma in definitiva non sono nient’altro che delle informazioni aggiuntive associate ad un post in aggiunta al titolo, al contenuto e alla categoria.

Utilizzarli per memorizzare delle informazioni personalizzate può portare vari benefici:

  • utilizzare un meccanismo standard di WordPress migliorando la possibilità di interoperare con altri temi, plugin, etc.
  • beneficiare della struttura (a livello di database) standard di WordPress senza creare delle proprie tabelle
  • utilizzare le funzioni standard di WordPress per estrarre/modificare/eliminare il valore dei custom fields
  • mantenere i valori precedentemente salvati anche durante un backup o un trasferimento

Ora che abbiamo visto nel dettaglio di costa si tratta potremmo porci la domanda: ma quando e soprattutto come dovrei usarli?

Quando: ogni qualvolta c’è bisogno di associare informazioni aggiuntive ad un post, per esempio se il nostro articolo tratta di una recensione di un libro potremmo voler associare all’articolo il link alla scheda del libro, il link per poterlo acquistare online e altre informazioni di vario genere.

Come: per la natura di questo blog preferisco non scendere eccessivamente nei dettagli tecnici anche perchè esiste già un’ottima documentazione ufficiale che è più che sufficiente per soddisfare la curiosità degli sviluppatori: http://codex.wordpress.org/Custom_Fields

CUSTOM POST TYPES

wordpress custom post types

I custom post types invece rappresentano il passo definitivo per la trasformazione di WordPress in un vero e proprio CMS di tutto rispetto.

Questa funzionalità permette infatti di creare i propri “post type” personalizzati, che non siano quindi ne articoli ne pagine ma ad esempio recensioni, film, etc. In questo modo è possibile infatti poter differenziare in modo sofisticato ed elegante gli articoli e le pagine da altri tipi di contenuti ed eventualmente presentare ed organizzare questi ultimi in modo totalmente diverso.

Con un esempio probabilmente sarà tutto più chiaro.

Immaginiamo di voler sviluppare un CMS per una videoteca, l’amministratore dovrà quindi essere in grado di poter inserire indipendentemente l’uno dall’altro e in modo totalmente personalizzato vari tipi di dati che riguarderanno i seguenti concetti:

  • film
  • telefilm
  • audio cd
  • recensioni
  • e così via…

Ci rendiamo conto inoltre che ciascun “concetto” (meglio chiamarlo entità) possiede le proprie caratteristiche (attributi o campi) e quindi necessiterà di un pannello differenziato per poter inserire o modificare i dati relativi ad esso.

Potremmo ottenere lo stesso effetto semplicemente utilizzando i custom fields per inserire le informazioni aggiuntive e le categorie per differenziare il tipo di dato ma sarebbe sicuramente una soluzione sporca e poco flessibile.

Inoltre è possibile associare ai propri custom post types delle tassonomie personalizzate, ovvero utilizzare le categorie anche per organizzare i nostri custom post types. Nel caso dei film sarà utilissimo creare una categoria per ciascun genere cinematografico e associare a ciascun film una o più categorie.

A questo punto quindi rimane solo da mostrare come creare i propri custom post types. Anche in questo caso non mi dilungherò nei dettagli tecnici ma mi limiterò a riportare il link alla documentazione ufficiale: http://codex.wordpress.org/Post_Types

PLUGIN

Come sempre nel mondo WordPress esistono vari plugin che semplificano la vita sia agli sviluppatori che agli amministratori (non sempre si tratta della stessa persona), citerò quelli che nella mia esperienza ho trovato più utili e professionali:

  • Advanced Custom Fields: grazie a questo plugin potrete utilizzare una semplice interfaccia per creare i vostri custom fields personalizzati e visualizzarli nella pagina di creazione/modifica di un post raggruppati in modo ordinato e sequenziale. E’ possibile inoltre impostare per ciascun custom field un tipo, ad esempio area di testo, campo di testo, combobox, file, link, etc.
  • Custom Post Type Template Redirect: molto probabilmente avrete anche l’esigenza di variare la visualizzazione in base allo specifico custom post type. Utilizzando questo plugin potrete utilizzare un diverso template per ciascun custom post type ottenendo quindi la massima flessibilità, portabilità e modularizzazione del codice.
  • Custom Post Type UI: a mio avviso il miglior plugin che fornisce un’interfaccia per creare custom post types e tassonomie senza leggere e/o scrivere una linea di codice.

Concludo dicendo che senz’altro questi strumenti rendono WordPress un ottimo strumento altamente personalizzabile e con una notevole semplicità d’uso, l’ideale quando bisogna combinare la stabilità e la flessbilità di un CMS alla semplicità di un software gestionale.

Come sempre aspetto i vostri commenti e i vostri suggerimenti :-)