La modifica dei dati è sempre presente in un sito basato su WordPress. Sia che si tratti di un nuovo post, di un commento aggiunto o di un tweet aggiornato per la prima pagina, lo stato di un blog viene costantemente modificato. Poiché tali dati sono spesso utili per un visitatore, è necessario visualizzarli. Questo, tuttavia, è tormentato dal fatto che le informazioni dinamiche, specialmente da fonti esterne, si traducono in siti più lenti e oppressi. Quando si tratta di questi problemi, l'API di WordPress Transient ti copre con il suo robusto caching. Il seguente screencast dimostrerà esattamente come sfruttare le sue funzionalità.
Accedere a un transitorio passando un nome al get_transient ()
funzione. Non preoccuparti; anche se non ne hai ancora creato uno, questo è ancora il primo passo! Per il nostro esempio, riceveremo un conteggio follower di Twitter.
$ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transient);
Se il valore di ritorno di get_transient ()
è falso, il transitorio è scaduto (in base al parametro temporale spiegato nel passaggio 3) o non è mai stato impostato in primo luogo:
if (false === $ count) // transient è scaduto; vai al passaggio 3
Quando un transitorio scade, deve essere resettato; in altre parole, i dati devono essere aggiornati. Per fare ciò, prima recupera i nuovi dati. In questo caso, ottenere il conteggio follower tramite l'API di Twitter come da video:
$ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); se ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_adeguati)) $ count = (int) $ json [0] -> followers_count;
Ora memorizzarlo usando il set_transient ()
funzione. Si noti che questo richiede un nome, un valore e un tempo di scadenza in secondi come parametri. Dopo questo tempo è trascorso, get_transient ()
restituirà false e attiverà nuovamente questo passaggio:
// scade tra 1 giorno (60 secondi / minuto * 60 minuti / ora * 24 ore / giorno = secondi / giorno) set_transient ($ transitorio, $ count, 24 * 60 * 60);
Combinando questo in una funzione si ottiene:
function twitter_follower_count () $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transient); if (false === $ count) $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); se ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_addebito)) $ count = (int) $ json [0] -> followers_conti; set_transient ($ transient, $ count, 24 * 60 * 60); return $ count;
Il conteggio follower non solo è disponibile per l'uso in qualsiasi parte del tuo sito, ma viene anche memorizzato in modo efficiente ogni giorno per ridurre i tempi di caricamento.
Il codice finale dello screencast, con alcune modifiche, è incluso di seguito:
class WPTuts_Transients public function WPTuts_Transients () public function twitter_follower_count () return $ this-> process_transient ('wptuts_twitter_follower_count', array ($ this, 'refresh_twitter_follower_count'), 24 * 60 * 60); public function refresh_twitter_follower_count () $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); $ count = false; se ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_adeguati)) $ count = (int) $ json [0] -> followers_count; return $ count; public function twitter_recent_tweets () return $ this-> process_transient ('wptuts_twitter_recent_tweets', array ($ this, 'refresh_twitter_recent_tweets'), 24 * 60 * 60); public function refresh_twitter_recent_tweets () $ data = @file_get_contents ("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=envatowp&count=5&trim_user=true&exclude_replies=true"); $ json = json_decode ($ data); $ tweets = false; se ($ json) $ tweets = $ json; restituire $ tweets; public function feedburner_subscriber_count () return $ this-> process_transient ('wptuts_feedburner_subscriber_count', array ($ this, 'refresh_feedburner_subscriber_count'), 24 * 60 * 60); public function refresh_feedburner_subscriber_count () $ data = @file_get_contents ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=wptuts'); $ count = false; if (preg_match ('~ circulation = "(\ d +)" ~', $ data, $ corrisponde) && isset ($ corrisponde a [1])) $ count = (int) $ corrisponde a [1]; return $ count; funzione privata process_transient ($ transient, $ refresh, $ time) $ data = get_transient ($ transient); if (false === $ data) if (is_callable ($ refresh)) $ data = call_user_func ($ refresh); set_transient ($ transient, $ data, $ time); restituisce $ dati;
Spero che questo sia stato utile tutorial sull'API Transient WordPress. Non esitate a lasciare i vostri commenti qui sotto.