Curl in WordPress per chiamate API e Transient

Qui siamo ad un livello avanzato 😎. Oggi vediamo come effettuare delle chiamate ad un qualsiasi servizio API e facciamo una Curl con le funzioni di WordPress usando wp_remote_get (o anche wp_safe_remote_get per le chiamate con SSL).

Per ragioni di performance, o semplicemente per limitare il numero di chiamate (per esempio usate servizi che vi lasciano poche chiamate al mese da poter effettuare), vedremo come migliorare il nostro codice tramite i “Transient” di serie in WordPress.

Questo quello che vedremo

wp_remote_get

wp_safe_remote_get

get_transient

set_transient

delete_transient

Chiamata alle API con WordPress

Di norma preferisco creare una funzione che esegue solo la chiamata e fa un semplice return di dati. Nell’esempio andremo a prendere più info possibili della moneta BitCoin tramite il servizio API fornito da CoinMarketCap qui la loro documentazione.

Questo è il JSON con il risultato e con tutte le info per la moneta BitCoin.

https://gist.github.com/miniMAC/c43a118800655038c0bff1056cd1f5e3

Come potete notare, quello che otteniamo eseguendo una chiamata GET tramite API è una raccolta di informazioni che possiamo manipolare a nostro piacimento.

Come vi dicevo per effettuare una chiamata in PHP usando la funzione wp_safe_remote_get di serie in WordPress potete usare questa funzione, che spiegherò all’interno del codice con i commenti.

https://gist.github.com/miniMAC/22a90fc1bd89ec51923ba22ba50f5b12

Con la funzione sopra quindi possiamo ottenere come risultato dei dati, ma è davvero necessario che ogni visitatore sul nostro sito effettui una nuova chiamata al servizio API, sprecando magari i nostri crediti sul numero di chiamate?

Per ovviare a questo e per prendere i dati, non proprio in tempo reale, ma con lo scarto di 1 ora per esempio, ci vengono incontro i Transient di WP.

Come usare i Transient

Ora vediamo come storare i dati nel database usando i transient di WordPress e quindi smettere di richiamare ogni volta un servizio esterno e usare intelligentemente le chiamate senza spreco di risorse.

I Transient, per chi non lo sapesse, permettono di salvare per un determinato periodo i dati in modo efficiente nel proprio database, evitando di eseguire query multiple sul sito che magari possono essere ottimizzate, questo appunto vale anche per servizi esterni che offrono le proprie API.

Iniziamo dall’esempio sopra a usare il Transient

https://gist.github.com/miniMAC/07f533faeacad4a586426c492dbd3e21

Ora che abbiamo una variabile PHP con dei dati creiamo la condizione

https://gist.github.com/miniMAC/39ab9bf21b94cb3ccd32f464fce79281

Bene! Ora tramite queste pochi codici abbiamo preso i dati da un servizio web sfruttando le chiamate API e li abbiamo salvati nel nostro database.

Se volete cancellare però un transiente allora dovete farlo dopo la chiamata ovvero:

https://gist.github.com/miniMAC/138b2ab0995b086987685d7ecc3fce89

In questo caso potrete cancellare il transient per poter riprendere con i vostri test in tempo reale.

Ovviamente lascio a voi prendere i dati nel miglior modo possibile e gestire per conto vostro tutto il codice HTML.

Per poter visionare i dati del transient vi basterà effettuare un semplice var_dump della variabile.

Per esempio:

https://gist.github.com/miniMAC/9554171a47d702eb22ea667ccfa41943

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *