I Plugin essenziali per far diventare WordPress un CMS completo

WordPress è nato inizialmente come blog system e l'installazione base della versione attuale ancora riflette quest'origine. Confrontandolo con altri CMS (Content Management System) più potenti, come ad esempio Drupal, si nota la mancanza di alcune funzionalità per la creazione di tipi di contenuti diversi da articoli di blog e per la gestione di campi custom complessi.

La realtà è che il motore di WordPress supporta queste funzionalità, almeno in parte, ma il backend non ha un'interfaccia per gestirle ed è necessario perciò un lavoro di programmazione ogniqualvolta si voglia aggiungere un nuovo tipo di dato.

Fortunatamente esistono un paio di plugin che aggiungono tutto ciò che serve all'area di amministrazione per rendere Wordpress un CMS in tutto e per tutto. Questi plugin sono:

Custom Post Type UI

Come dice il nome questo plugin aggiunge un'interfaccia utente per creare e gestire i Custom Post Type, ovvero tipi di contenuti personalizzati che non ricadono nei due tipi standard di WordPress che sono Pagine e Articoli.

Non è raro che, anche nei siti vetrina più semplici, ci sia la necessità di avere un tipo di post particolare a seconda dell'ambito e del tema del sito, come ad esempio "Eventi", o "Ricette". Potremmo gestirli come Pagine volendo, ma con CPT UI possiamo creare in pochi istanti il nuovo tipo di contenuto e relative sottosezione nel backend per gestire il tutto senza confusione.

Per creare un nuovo tipo di contenuto bisogna andare in CPT UI -> Aggiungi/Modifica tipi di contenuti. Ci si presenterà una schermata piuttosto lunga ma è sufficiente compilare le voci nella scheda iniziale "Impostazioni di base", inserendo lo slug, Etichetta plurale e singolare.

Proviamo a inserire "event" come slug, "Eventi" ed "Evento" come etichetta plurale e singolare rispettivamente.

Custom post type UI, creazione tipo custom

premendo "Aggiungi il tipo di contenuto" questo verrà creato nel sistema e avremo a disposizione la voce "Eventi" nella colonna di sinistra, che potremo utilizzare allo stesso modo di Pagine ed Articoli.

Come avrete notato, sia nel menu principale a sinistra che in alto compaiono dei link "Aggiungi articolo" che magari potrebbero essere fuorvianti o creare confusione ad altri che gestiscono il sito. Nessun problema, nella pagina di aggiunta/modifica dei tipi di contenuto che abbiamo visto prima, dopo le "Impostazioni base", c'è tutta una serie di impostazioni che permettono di indicare le varie diciture di link e pulsanti.

Provando semplicemente a compilare il campo "Aggiungi nuovo" inserendo "Aggiungi nuovo evento" come mostrato qui:

vedremo che la dicitura nel menu e nella lista eventi è cambiata di conseguenza

Nella pagine di aggiunta/modifica tipi di contenuto, come avete visto è presente tutta un'altra serie di opzioni, che vi lascio però esplorare da voi e non spiego qui una per una poiché sono veramente numerose; sono comunque per la maggior parte molto semplici da comprendere e per ognuna di esse c'è una spiegazione nell'interfaccia.

Cosa più interessante e importante ora è sapere che oltre ai Tipi di Contenuto è possibile creare con queste plugina anche nuove Tassonomie, ovvero nuovi dizionari di termini da associare ai contenuti del sito. Per capirsi, Categorie e Tags sono due Tassonomie.

La modalità di creazione e modifica delle tassonomie è simile a quella vista per i tipi di contenuti, di importante in più da evidenziare c'è una tabellina da cui si può selezionare a quali tipi di contenuto è associata la tassonomia, e si può scegliere sia tra i tipi di base che tra i custom.

Se proviamo ad aggiungere una nuova tassonomia e associarla al nostro tipo "Eventi" come mostrato sotto:

vedremo comparire sotto la voce Eventi nella barra a sinistra la nuova voce per gestire la tassonomia, dal cui interno potremo aggiungere e modificare i termini con un'interfaccia identica a quella che si usa per Categorie e Tag.

Anche per le tassonomie è possibile modificare stringhe di interfaccia e varie opzioni ad esempio per renderle gerarchiche o meno, ma anche in questo caso lascio a voi il divertimento di andarle a scoprire una ad una.

Advanced Custom Fields

Il plugin Advanced Custom Fields (ACF) è il secondo tassello che manca per rendere WordPress un CMS completo. Quel che ci permette di fare è impostare dei campi aggiuntivi per i nostri contenuti oltre ai soli Titolo e Corpo. Sembra una cosa banale ma anche nel sito più semplice, nel 90% c'è bisogno di gestire qualche altro dato.

Continuando nel nostro esempio potremmo voler inserire nei nostri Eventi la data di inizio e fine. Certo potremmo scrivere le date all'interno del testo, ma poi dovremmo ricordarci di formattarle sempre nello stesso modo e inserirle sempre nello stesso punto del testo, inoltre non avremmo possibilità di creare delle funzioni specifiche per cercare o ordinare gli eventi a seconda della data. 

Oltre alle date vogliamo anche inserire un luogo geografico dove si svolge ogni Evento; anche in questo caso inserire l'indirizzo all'interno del testo principale è una soluzione con molti limiti. Se volessimo ad esempio mostrare tutti gli Eventi su una mappa?

Con ACF possiamo configurare il nostro sito in modo che dal backend sia possibile inserire tutti i dati in modo ordinato e nel formato corretto. Una volta installato e attivato il plugin andiamo alla nuova voce Campi Personalizzati -> Aggiungi nuovo

Questa pagina ci permette di creare un gruppo di Campi. Inseriamo un titolo, ad esempio "Campi Evento", e poi iniziamo la parte interessante cliccando il pulsante "Aggiungi Campo". Le informazioni importanti per configurare un nuovo campo sono le prime tre: "Etichetta campo" è l'etichetta che compare vicino al campo nel form del backend, giusto per far sapere all'utente cosa sta andando a inserire. Nome campo è il nome del campo per il sistema, necessario per la programmazione. La tendina "Tipo di Campo" serve ad indicare la tipologia del dato che vogliamo gestire, a seconda di quel che selezioniamo qui verrà generato nella pagina di editing una campo di input adeguato, un input testuale classico se scegliamo Testo o Numerico (il numerico però non ci lascerà inserire lettere!), un datepicker se scegliamo un campo Data, un'interfaccia per caricare o selezionare un file se scegliamo Immagine e così via.

Nel nostro esempio selezioniamo Selettore Data per la nostra data di inizio

Sotto al Tipo di Campo vediamo un'altra serie di opzioni che permettono una configurazione al dettaglio del nostro campo permettendo di specificare se è obbligatorio, un valore di default se non inseriamo niente e altro.

Inserire un secondo campo per la Data di fine dei nostri Eventi è identico.

Inseriamo poi un campo di tipo diverso, selezionando dalla tendina Google Map, che servirà per indicare il luogo dove si svolge l'evento.

Se ben notate doppo il campo "Richiesto?" le informazioni da inserire cambiano contestualmente al Tipo di Campo che selezioniamo, in questo caso i dati sono relativi a una mappa di cui possiamo impostare centro e zoom.

Una volta configurati i nostri 3 campi, scorriamo leggermente fino alla tabellina intitolata "Posizione". Qui dobbiamo inserire delle regole che dicano al sistema a quali Tipi di Contenuto vogliamo associare i nuovi campi. Possiamo scegliere sia contenuti base che contenuti custom, e inserire anche più regole complesse in modo da associare i nuovi campi a più di un Tipo di Contenuto. Nel nostro esempio molto semplice al momento ci basta associarli agli Eventi, impostando le tre tendine a "Tipo Post", "è uguale a", "Evento".

Fatto questo possiamo premere il pulsante "Pubblica".

Andando ora a creare un nuovo evento (Eventi -> Aggiungi nuovo evento), oltre ai due classici titolo e corpo di testo, troveremo sotto una nuova tabella intitolata "Campi Evento" con i nostri tre nuovi campi! Possiamo così inserire le date:

e dopo le date vediamo una comodissima mappa Google da cui possiamo o cercare un indirizzo o scorrere e zoomare manualmente e cliccare sulla mappa per indicare la location esatta.

Come detto in precedenza avremmo potuto realizzare tutto questo anche scrivendo il codice a mano, semplicemente con un dispendio di tempo molto più alto.

Non mi è chiaro come mai WordPress ancora non abbia un'interfaccia di default per supportare queste funzionalità, ma con questi due plugin WordPress assume un aspetto completamente diverso è più completo come CMS rispetto a una semplice piattaforma di blogging.