Il Content Ma­na­ge­ment System (CMS) Wordpress raccoglie sempre più consensi. Rispetto ad altri CMS, permette di creare siti per scopi diversi in modo re­la­ti­va­men­te semplice. Possono occuparsi della cura dei siti anche semplici redattori che di­spon­go­no di solide co­no­scen­ze di Office. Inoltre, gli am­mi­ni­stra­to­ri web possono attingere a più di 55.000 plug-in che svolgono molti compiti del sito e sono per la maggior parte gratuiti nella loro versione base.

Consiglio

Abbiamo riassunto tutti i vantaggi per i vostri siti WordPress nei modelli tariffari “Essential”, “Business” e “Unlimited”. Ap­pro­fit­ta­te della sem­pli­ci­tà di accesso, della sicurezza inclusa e della nostra piat­ta­for­ma ot­ti­miz­za­ta per il vostro hosting di WordPress.

Che cos’è la REST API di WordPress?

REST API è un’in­ter­fac­cia che permette di co­mu­ni­ca­re con il database uti­liz­za­to da WordPress. L’ab­bre­via­zio­ne API sta per "Ap­pli­ca­tion Pro­gram­ming Interface”, in italiano “in­ter­fac­cia di pro­gram­ma­zio­ne di un'ap­pli­ca­zio­ne”. Tale in­ter­fac­cia consente lo scambio tra diversi programmi secondo un modello pre­sta­bi­li­to; in maniera analoga alle in­te­ra­zio­ni tra due persone che sono in grado di capirsi soltanto se uti­liz­za­no una lingua com­pren­si­bi­le a entrambe. Nel nostro articolo “API:Cosa bisogna sapere sulle in­ter­fac­ce di pro­gram­ma­zio­ne” ap­pro­fon­dia­mo ul­te­rior­men­te l’argomento.

L'ab­bre­via­zio­ne REST sta invece per “Re­pre­sen­ta­tio­nal State Transfer”. Si tratta dei principi per lo scambio di in­for­ma­zio­ni, in­tro­dot­ti nell’anno 1994 dal­l'in­for­ma­ti­co sta­tu­ni­ten­se Roy Fielding:

  • in­ter­fac­cia unica: l’URL per accedere alle risorse deve essere uniforme, coerente e ac­ces­si­bi­le tramite un metodo comune come GET.
  • Struttura client-server: se cambia la tec­no­lo­gia del server (per esempio WordPress), un'ap­pli­ca­zio­ne di un client come un’app deve comunque con­ti­nua­re ad accedervi.
  • Assenza di stato: il server non modifica il proprio stato in caso di nuova richiesta tramite API e non salva la richiesta.
  • Cacheable: sia il server che il client devono garantire un alto livello di velocità e con­for­mi­tà.
  • Layered System: l'accesso è possibile at­tra­ver­so più strati (layer).
  • Code on Demand (fa­col­ta­ti­vo): i codici ese­gui­bi­li possono essere trasmessi al client in caso di necessità.

Questi vincoli fanno parte del co­sid­det­to Core, ossia della pro­gram­ma­zio­ne base del Content Ma­na­ge­ment System dalla versione 4.7 di Wordpress. Prima di allora, cioè fino al 13 maggio 2018, era presente il plug-in “WP REST API (WP API)”. Dalla versione 5.x di Wordpress sono stati inseriti elementi nel Core del sistema, che aumentano le pos­si­bi­li­tà di co­mu­ni­ca­zio­ne esistenti con altre ap­pli­ca­zio­ni (web).

Managed Hosting per WordPress
Genera il tuo sito web con l'IA: al resto pensiamo noi
  • 0 co­no­scen­ze pre­li­mi­na­ri richieste grazie a intuitive funzioni IA
  • Tanti temi e plugin per per­so­na­liz­za­re come vuoi
  • Ag­gior­na­men­ti semplici e gestione minima

Cosa si può fare con la REST API di WordPress?

L’in­ter­fac­cia rende possibile la co­mu­ni­ca­zio­ne diretta con il database uti­liz­za­to da WordPress, dove sono salvate tutte le in­for­ma­zio­ni di un sito. Questa banca dati si utilizza con il database ma­na­ge­ment system MySQL, un software open source. Esistono dei comandi per la co­mu­ni­ca­zio­ne che per­met­to­no l’accesso at­tra­ver­so l’API “inclusa” in WordPress. Sono possibili diverse strade.

Accesso alla banca dati via terminale

La REST API di WordPress consente l'accesso ai contenuti di un sito WordPress at­tra­ver­so il prompt dei comandi di Windows, come spiegato di seguito:

  • cliccate con il tasto destro del mouse sul­l'i­co­na di Windows > “Esegui” > digitate “cmd” nella finestra > “OK”.
  • Attivate la ricerca nella barra delle ap­pli­ca­zio­ni > Digitare “cmd > Cliccate su “Prompt dei comandi”

Oppure il Terminale su macOS:

  • Usando la com­bi­na­zio­ne di tasti “cmd” + [Spazio]. Da qui digitate “Terminale” e fate doppio clic sul risultato.
  • Nella barra superiore del menu sulla scrivania se­le­zio­na­te “Vai a” > “Ap­pli­ca­zio­ni/Utility”; nella finestra che si aprirà cliccate due volte su “Terminale”.
  • Nel “Dock” andate su “Programmi” > “Ap­pli­ca­zio­ni/Utility” > “Terminale”.

I comandi effettivi saranno inseriti dopo il prompt che lampeggia sullo schermo, ad esempio:

C:\Users\VostroNomeUtente>_

Inserite la seguente in­di­ca­zio­ne:

curl -X OPTIONS -i https://vostrodominio.it/wp-json/

Premete “Invio” e dopo pochi secondi vi apparirà il risultato sullo schermo. Si tratta dei dati base del sito con le opzioni permesse (“OPTIONS”). Tra i vari si riconosce il comando GET:“Allow:GET”.

Con il comando

curl -X GET http://vostrodominio.it/wp-json/

Ri­ce­ve­re­te tutte le in­for­ma­zio­ni dalla banca dati, uguali nel contenuto al processo il­lu­stra­to nel prossimo paragrafo.

Uti­liz­za­re la REST API di WordPress dal browser

I contenuti della banca dati di WordPress sono con­sul­ta­bi­li anche aprendo un browser HTTP. Anche qui si usa il formato JSON.

https://vostrodominio.it/wp-json/
Fatto

JSON è l’ab­bre­via­zio­ne di “Ja­va­Script Object Notation”, ovvero un formato di testo per lo scambio di dati. È facile da imparare e leggere e offre un uso fles­si­bi­le, come spiegato nel nostro tutorial di mark-up con JSON-LD e nel nostro articolo a proposito di JSONP: script per query tra domini con JSONP.

Le in­for­ma­zio­ni richieste saranno a di­spo­si­zio­ne come se si trattasse di un libro aperto. Per fare un’analisi più ap­pro­fon­di­ta dei contenuti del sito, la REST API di WordPress permette, grazie all’uso di numerosi comandi, di aprire in modo det­ta­glia­to com­po­nen­ti definite della banca dati. L’apertura dei post (con­tri­bu­ti) sarà ad esempio con:

https://ihredomain.de/wp-json/wp/v2/posts

Così ri­ce­ve­re­te una pa­no­ra­mi­ca di tutti i post (con­tri­bu­ti) della banca dati con le versioni even­tual­men­te di­spo­ni­bi­li, i link, i contenuti media, l’autore e molto altro ancora. Nella banca dati di WordPress, ciascun singolo post è con­trad­di­stin­to in modo univoco dal suo ID.

Per leggere un singolo post sul browser, basta inserire il suo ID nel box di ricerca:

https://vostrodominio.it/wp-json/wp/v2/posts/6576

Questo pro­ce­di­men­to si può applicare a tutti i contenuti:Oltre ai post, anche per le pagine (pages), contenuti media (media), autori (author) e molto altro ancora. La guida della REST API di WordPress con la referenza completa dei comandi è di­spo­ni­bi­le come REST API Handbook su WordPress.org, il sito per gli svi­lup­pa­to­ri.

La REST API di WordPress nella pratica

A cosa serve quest’API di WordPress? Ve lo mo­stre­re­mo con un semplice esempio pratico: un nuovo sito dovrà rac­co­glie­re tutte le news di altri fornitori di servizi internet. Questo fun­zio­ne­rà con la API di WordPress soltanto se anche gli altri siti esistenti sono pro­gram­ma­ti con WordPress. A tale scopo verranno richiesti ai server se­le­zio­na­ti i contenuti con relativo ID.

Esistono diverse pos­si­bi­li­tà di pro­gram­ma­zio­ne per aprire sempre i contenuti più ag­gior­na­ti tra cui il lin­guag­gio di scripting PHP o il Query della bi­blio­te­ca di Ja­va­Script. Ve li pre­sen­tia­mo con l’ausilio di due semplici esempi di codice per la API di WordPress.

Leggere un post con PHP

Per leggere un post pro­ve­nien­te da un altro sito WordPress, si inserisce un segmento di codice tra <body> … </body> in una pagina HTML. Questa pagina deve essere nelle con­di­zio­ni di trattare un PHP, che in questo esempio abbiamo nominato “test-wp-rest-api.php”. Il nome del campo relativo si deduce dalla richiesta JSON rap­pre­sen­ta­ta in alto (guide, title, link, content …). Il segmento di codice è composto da uno script PHP, che prende le in­for­ma­zio­ni, e una com­po­nen­te HTML, che riporta tramite PHP i dati letti.

<!--?php</codesnippet-->
$url = 'https://www.miosito.it/wp-json/wp/v2/posts/6576'; // Il path della richiesta JSON con ID.
$data = file_get_contents($url); // Trasmettere il contenuto in una variabile
$mydata = json_decode($data, true); // decodificare stringa JSON
?>
<h1>PHP:Leggere il post con la REST API di WordPress</h1> // Intestazione
<div id="mydata"></div>
<!--?php echo $mydata['content']['rendered']; ?--> // Rilascio del 'content' con l’ID 6576

Leggere post con jQuery

jQuery è un'al­ter­na­ti­va per leggere i contenuti. Per farlo, questa library deve essere inserita nell’in­te­sta­zio­ne della pagina. Funziona anche per i file con esten­sio­ne .html.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> // inserire jQuery
<script>// la parte per leggere i dati del post</codesnippet></script>
$(function() {
$.getJSON('https://mtmedia.de/wp-json/wp/v2/posts/6576', function(alldata) {
var contentElm = alldata.content.rendered
$(contentElm).appendTo("#mydata");
});
});
<h1>jQuery:Leggere il post con la REST API di WordPress</h1> // Intestazione
<div id="mydata"> Rilascio del 'content' del post con l’ID 6576</div>

Il risultato nel browser è identico a quello pro­gram­ma­to in PHP.I contenuti tramite jQuery vengono ri­la­scia­ti senza ulteriori variabili nel container DIV.

Cosa accade nei siti con un altro CMS?

L’API, e cioè la REST API di WordPress, è una com­po­nen­te integrata della pro­gram­ma­zio­ne con WordPress. Perciò questa in­ter­fac­cia è a di­spo­si­zio­ne uni­ca­men­te per le richieste di siti pro­gram­ma­ti con WordPress.

Il tentativo di richiesta genera una notifica di errore 404. Per questi siti non esistono altre soluzioni per inviare richieste alla banca dati del CMS.

Bloccare l'accesso alla REST API di WordPress

Non tutti, però, de­si­de­ra­no che le in­for­ma­zio­ni sul proprio sito possano essere lette, o ad­di­rit­tu­ra uti­liz­za­te, in modo così semplice. Per impedire che ciò accada, esiste una barriera at­ti­va­bi­le nel back end di WordPress.

Come qualsiasi altro plug-in, per impedire l'accesso a soggetti non au­to­riz­za­ti il “Disable WP REST API” deve essere attivato dopo l’in­stal­la­zio­ne dal re­po­si­to­ry di WordPress, non sono ne­ces­sa­rie altre im­po­sta­zio­ni.

Il codice di stato “401” (Unau­tho­ri­zed) indica che il server ha respinto una richiesta HTTP per un’au­ten­ti­ca­zio­ne mancante o non valida. A dif­fe­ren­za del “403”, in questo caso l’au­ten­ti­ca­zio­ne è possibile.

In questo modo molti siti si pro­teg­go­no at­ti­va­men­te per impedire il furto di contenuti au­to­ma­tiz­za­to. Ricevere l’au­to­riz­za­zio­ne dei gestori di un sito per uti­liz­za­re contenuti estranei non è soltanto una questione di buone maniere, ma anche di rispetto di chi ne detiene i diritti. Per ve­ri­fi­ca­re con il proprio sito basta impostare il plug-in su “Di­sat­ti­va­to”. In questo modo tutti i contenuti della banca dati possono essere richiesti come descritto. I dati contenuti nel plug-in non possono andare persi.

Vai al menu prin­ci­pa­le