Lucrul cu schimbarea datelor cacheabile? WP-Transients a ajuns înapoi!

Schimbarea datelor este vreodată prezentă într-un site web alimentat de WordPress. Fie un post nou, un comentariu adăugat sau un tweet actualizat pentru prima pagină, statutul unui blog este în mod constant modificat. Deoarece astfel de date sunt adesea utile unui vizitator, este nevoie să-l afișați. Acest lucru, însă, este afectat de faptul că informațiile dinamice - în special din surse externe - au ca rezultat site-uri mai lente, împovărate. Când vine vorba de aceste probleme, API-ul WordPress Transient vă acoperă cu cache-ul robust. Următorul ecran va demonstra exact cum să profitați de caracteristicile sale.


screencast


Pasul 1 Obțineți numele tranzitoriu

Accesați un tranzitoriu prin trecerea unui nume în get_transient () funcţie. Nu-ți face griji; chiar dacă nu ați creat încă unul, acesta este încă primul pas! Pentru exemplul nostru, vom obtine un numar de followers Twitter.

 $ tranzitorie = 'wptuts_twitter_follower_count'; $ count = get_transient ($ tranzitorie);

Pasul 2 Verificați dacă tranzitorul a expirat

Dacă valoarea returnată de get_transient () este falsă, tranzitorul a expirat (pe baza parametrului de timp explicat la pasul 3) sau nu a fost niciodată setat în primul rând:

 dacă (false === count $) // tranzitorie a expirat; treceți la pasul 3

Pasul 3 Dacă a expirat, setați opțiunea Transient

Când expiră un tranzitoriu, trebuie resetat; cu alte cuvinte, datele trebuie să fie actualizate. Pentru a realiza acest lucru, recuperați mai întâi datele noi. În acest caz, obțineți numărul de participanți prin intermediul API-ului Twitter conform videoclipului:

 $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ date); dacă $ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count;

Acum, păstrați-l folosind set_transient () funcţie. Rețineți că acest lucru necesită un nume, o valoare și un timp de expirare în secunde ca parametri. După ce a trecut acest timp, get_transient () va reveni la fals și va declanșa din nou acest pas:

 // expiră în 1 zi (60 secunde / minut * 60 de minute / oră * 24 de ore / zi = secunde / zi) set_transient ($ tranzient, $ count, 24 * 60 * 60);

Pasul 4 Puneți-i pe toți împreună

Combinând aceasta într-o singură funcție, rezultă:

 funcția twitter_follower_count () $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ tranzitorie); dacă false === $ count) $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ date); dacă $ json && isset ($ json [0]) și & isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; set_transient ($ tranzient, $ count, 24 * 60 * 60);  returnați numărul $; 

Conținutul contestatului nu este disponibil numai pentru utilizare oriunde pe site-ul dvs., dar este, de asemenea, eficient cached în fiecare zi pentru a reduce timpul de încărcare.


Codul final din videoclip

Codul final din ecranul publicitar - cu câteva modificări - este inclus mai jos:

 clasa WPTuts_Transients funcția publică WPTuts_Transients ()  funcția publică twitter_follower_count () return $ this-> process_transient ('wptuts_twitter_follower_count', array ($ this, 'refresh_twitter_follower_count'), 24 * 60 * 60);  funcția publică refresh_twitter_follower_count () $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ date); $ count = false; dacă $ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; returnați $ count;  funcția publică twitter_recent_tweets () return $ this-> process_transient ('wptuts_twitter_recent_tweets', array ($ this, 'refresh_twitter_recent_tweets'), 24 * 60 * 60);  funcția publică 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 ($ date); $ tweets = false; dacă ($ json) $ tweets = $ json; returnează tweet-uri;  funcția publică feedburner_subscriber_count () return $ this-> process_transient ('wptuts_feedburner_subscriber_count', array ($ this, 'refresh_feedburner_subscriber_count'), 24 * 60 * 60);  funcția publică refresh_feedburner_subscriber_count () $ data = @file_get_contents ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=wptuts'); $ count = false; dacă preg_match ('~ circulație =' (\ d +) "~ ', $ date, $ matches) && isset ($ matches [1]) $ count = (int) $ matches [1]; returnați $ count;  funcția privată process_transient ($ transient, $ refresh, $ time) $ data = get_transient ($ tranzitorie); dacă (false === $ date) if (is_callable ($ refresh)) $ data = call_user_func ($ refresh); set_transient ($ tranzient, $ date, $ timp);  returnează date $; 

Mulțumiri

Sper că acest lucru a fost un tutorial util pe API-ul WordPress Transient. Vă rugăm să aveți libertatea de a vă lăsa comentariile de mai jos.

Cod