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
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.
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.
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
Ora che abbiamo una variabile PHP con dei dati creiamo la condizione
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:
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: