Se utilizzi WordPress abitualmente per gestire il tuo sito web (o i tuoi siti web), di certo ti sarai “innamorato” della sua semplicità e praticità.
Proprio per questo motivo, possiamo pensare di utilizzare il CMS più diffuso al mondo per centralizzare la gestione dei contenuti (anche in maniera mirata) di diversi sistemi, come applicazioni, landing pages, siti web, ecc..
Come? Attraverso le “magie” di JSON.
Di cosa si tratta? JSON, acronimo di JavaScript Object Notation, è un protocollo di comunicazione particolarmente indicato per lo scambio di dati tra applicazioni client-server, che oggi trova la sua massima espressione nella programmazione AJAX (in cui avviene, in background, uno scambio di dati tra il server ed il browser) e nelle applicazioni per dispositivi “mobile”.
Da questo punto di vista, potremmo dire che JSON è l’erede del buon vecchio XML.
Vediamo quindi come usare WordPress per trasformarlo in un CMS universale.
Proporrò la soluzione che probabilmente è la più semplice ed immediata, ma tieni presente che ne esistono altre che utilizzano strumenti diversi.
La prima operazione da eseguire è installare un plugin talmente noto e diffuso che probabilmente fa già parte del tuo set: sto parlando di Jetpack by WordPress.com.
Dopo aver completato l’installazione è necessario collegare il plugin al tuo account su wordpress.com; se non l’hai mai fatto, niente paura: accedendo al sito web lo otterrai in pochi click.
Jetpack è un plugin “coltellino svizzero”, nel senso che contiene una quantità enorme di funzionalità e potremmo parlarne per ore, ma per il nostro scopo si dovranno semplicemente attivare le API JSON cliccando sul box dedicato (come da immagine che segue) e successivamente su “configura”.
La procedura di attivazione del servizio termina spuntando la voce “Allow management” e salvando la configurazione.
L’attivazione delle API JSON permette la gestione completa di WordPress mediante delle richieste remote che possiamo dividere nelle due seguenti categorie.
- Operazioni di lettura:le API restituiscono l’oggetto JSON contenente i dati richiesti.
Alcuni esempi: puoi richiedere tutti i post, un singolo post, i post di una categoria, una pagina, una ricerca tra i post con un limite massimo di risultati, ecc.. I parametri per la generazione della query (es.: il numero massimo di risultati, l’ordinamento, il tag o la categoria di appartenenza, lo status, ecc.) vengono inviati mediante GET. - Operazioni di scrittura (modifica, inserimento, eliminazione): le API restituiscono l’oggetto JSON relativo all’elemento appena inserito/modificato/eliminato. In questo caso, i parametri che identificano l’elemento vengono inviati attraverso il metodo POST.
L’elenco completo delle API è disponibile nella documentazione ufficiale: REST API Resources.
A questo punto, la domanda nasce spontanea: e la sicurezza dove la mettiamo?
Chiaramente le API restituiscono qualunque dato gestito su WordPress, ma con livelli di autorizzazione diversi. Per ottenere tutti i dati, è necessario effettuare l’autenticazione prima delle richieste.
Il protocollo utilizzato per l’autenticazione è OAuth2, che ormai è uno standard molto diffuso per l’autorizzazione delle API.
A questo proposito consiglio la consultazione della documentazione ufficiale ed il tool che seguono.
- OAuth2 Authentication: le specifiche per eseguire l’autenticazione.
- My Applications: utile per la generazione di tutti i dati necessari per l’autenticazione (l’API Token).
Vediamo un esempio per comprendere meglio le potenzialità di questo strumento.
Come possiamo ottenere gli ultimi 5 articoli del blog che appartengono alla categoria “geolocalizzazione” e sono taggati su “Padova”?
Lo vediamo il PHP, ma questo tipo di chiamata remota è eseguibile da ogni linguaggio di programmazione; così come l’interpretazione dell’oggetto JSON restituito.
<?php $opzioni = array ( 'http' => array ( 'ignore_errors' => true, ), ); $contesto = stream_context_create( $opzioni ); $dati = file_get_contents( 'https://public-api.wordpress.com/rest/v1/sites/posts/?number=5&order_by=date&order=DESC&category=geolocalizzazione&tag=padova', false, $contesto ); $dati = json_decode( $dati ); ?>
Il risultato che si otterrà, sarà un oggetto JSON che conterrà, come primo parametro, il numero di risultati che la nostra query avrà prodotto (indipendentemente dal limite di 5 che ho imposto), e come secondo, l’array dei post (che comprende tutti i dati ad essi relativi) che la soddisfano, pronto ad essere interpretato ed utilizzato per “stampare” i dati che ci servono.
Un sistema di questo tipo, ad esempio, potrebbe essere la base per la realizzazione di una applicazione per smartphone che fornisce informazioni diverse in base alla geolocalizzazione.
Come puoi immaginare, questo è solo un semplicissimo esempio che ho utilizzato per farti comprendere le potenzialità del “mezzo”. Grazie alla flessibilità e alle tassonomie di WordPress puoi organizzare i contenuti con un elevato livello di dettaglio ed estrarli a piacimento attraverso le API da ogni tipo di piattaforma.
La compatibilità degli oggetti JSON restituiti, infatti, è totale ed ogni linguaggio di programmazione (sia client, sia server) possiede le procedure per interpretarli ed utilizzarli.
Concludo il post con un consigio per lavorare con gli oggetti JSON. Per ottenere una formattazione più semplice da consultare ed una validazione della struttura dell’oggetto JSON suggerisco di utilizzare JSONLint.