Arbetar med att ändra, cacheable data? WP-transienter har fått dig tillbaka!

Ändring av data finns någonsin på en WordPress-driven webbplats. Om det är ett nytt inlägg, en tillagd kommentar eller en uppdaterad tweet på forsidan, ändras statusen för en blogg ständigt. Eftersom sådana data ofta är användbara för en besökare, kommer det att finnas ett behov av att visa det. Detta är emellertid plågad av det faktum att dynamisk information, särskilt från externa källor, resulterar i långsammare, belastade platser. När det gäller dessa problem har WordPress Transient API täckt med sin robusta caching. Följande skärmdump kommer att visa exakt hur du utnyttjar dess funktioner.


screencast


Steg 1 Hämta transienten med namn

Få tillgång till en övergående genom att skicka ett namn till get_transient () fungera. Oroa dig inte; även om du inte har skapat en ännu, är detta fortfarande det första steget! För vårt exempel får vi en Twitter-följareräkning.

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

Steg 2 Kontrollera om övergången har gått ut

Om returvärdet av get_transient () är felaktigt har övergångsperioden gått ut (baserat på tidsparametern förklarad i steg 3) eller sattes aldrig i första hand:

 om (false === $ count) // transient har löpt ut; fortsätt till steg 3

Steg 3 Om Expired, Ställ in transienten

När en transient går ut, måste den återställas. Med andra ord måste uppgifterna uppdateras. För att uppnå detta, hämta först de nya uppgifterna. I det här fallet får du följaren räkna via Twitter API enligt videon:

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

Spara det nu genom att använda set_transient () fungera. Observera att detta kräver ett namn, värde och utgångstid i sekunder som parametrar. Efter denna tid har förflutit, get_transient () kommer att returnera falskt och utlösa detta steg igen:

 // löpa ut om 1 dag (60 sekunder / minut * 60 minuter / timme * 24 timmar / dag = sekunder / dag) set_transient ($ transient, $ count, 24 * 60 * 60);

Steg 4 Sätt det tillsammans

Kombinera detta till en funktion ger:

 funktion twitter_follower_count () $ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transient); om (false === $ count) $ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); om $ json && isset ($ json [0]) && isset ($ json [0] -> följare_count)) $ count = (int) $ json [0] -> followers_count; set_transient ($ transient, $ count, 24 * 60 * 60);  returnera $ count; 

Follower counten är inte bara tillgänglig för användning någonstans på din webbplats, men det är också effektivt cachade varje dag för att begränsa belastningstiderna.


Slutkod från videon

Den slutliga koden från screencast-med några ändringar-ingår nedan:

 klass WPTuts_Transients public function WPTuts_Transients ()  offentlig funktion twitter_follower_count () return $ this-> process_transient ('wptuts_twitter_follower_count', array ($ this, 'refresh_twitter_follower_count'), 24 * 60 * 60);  allmän funktion 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; om ($ json && isset ($ json [0]) && isset ($ json [0] -> följare_count)) $ count = (int) $ json [0] -> followers_count; returnera $ count;  offentlig funktion twitter_recent_tweets () return $ this-> process_transient ('wptuts_twitter_recent_tweets', array ($ this, 'refresh_twitter_recent_tweets'), 24 * 60 * 60);  offentlig funktion 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; om ($ json) $ tweets = $ json; returnera $ tweets;  public function feedburner_subscriber_count () return $ this-> process_transient ('wptuts_feedburner_subscriber_count', array ($ this, 'refresh_feedburner_subscriber_count'), 24 * 60 * 60);  allmän funktion refresh_feedburner_subscriber_count () $ data = @file_get_contents ('https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=wptuts'); $ count = false; om (preg_match ('~ circulation = "(\ d +)" ~, $ data, $ matchningar) && isset ($ matchningar [1])) $ count = (int) $ matchningar [1]; returnera $ count;  privat funktion process_transient ($ transient, $ refresh, $ time) $ data = get_transient ($ transient); om (false === $ data) om (is_callable ($ refresh)) $ data = call_user_func ($ refresh); set_transient ($ transient, $ data, $ time);  returnera $ data; 

Tack

Jag hoppas att detta har varit en bra handledning i WordPress Transient API. Vänligen gärna lämna dina kommentarer nedan.