Het wijzigen van gegevens is altijd aanwezig op een WordPress-site. Of het nu een nieuw bericht, een toegevoegde opmerking of een bijgewerkte tweet voor de voorpagina is, de status van een blog wordt voortdurend gewijzigd. Aangezien dergelijke gegevens vaak nuttig zijn voor een bezoeker, moet deze worden weergegeven. Dit wordt echter geplaagd door het feit dat dynamische informatie, vooral uit externe bronnen, resulteert in tragere, belastende sites. Als het op deze problemen aankomt, heeft de WordPress Transient API u gedekt door zijn robuuste caching. De volgende screencast laat precies zien hoe u van de functies ervan kunt profiteren.
Toegang tot een voorbijganger door een naam door te geven aan de get_transient ()
functie. Maak je geen zorgen; ook al heb je er nog geen gemaakt, dit is nog steeds de eerste stap! Voor ons voorbeeld krijgen we een Twitter-volgertelling.
$ transient = 'wptuts_twitter_follower_count'; $ count = get_transient ($ transient);
Als de geretourneerde waarde van get_transient ()
is onwaar, de transiënt is ofwel verlopen (gebaseerd op de tijdparameter die in stap 3 is uitgelegd) of is nooit ingesteld in de eerste plaats:
if (false === $ count) // transient is verlopen; ga verder met stap 3
Wanneer een voorbijgaande periode verloopt, moet deze worden gereset; met andere woorden, de gegevens moeten worden vernieuwd. Om dit te bereiken, moet u eerst de nieuwe gegevens ophalen. Haal in dit geval het aantal volgers op via de Twitter API volgens de video:
$ data = @file_get_contents ('http://api.twitter.com/1/users/lookup.json?screen_name=envatowp'); $ json = json_decode ($ data); if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count;
Sla het nu op met behulp van de set_transient ()
functie. Merk op dat dit een naam, waarde en verlooptijd in seconden als parameters vereist. Nadat deze tijd is verstreken, get_transient ()
retourneert false en activeert deze stap opnieuw:
// verloopt over 1 dag (60 seconden / minuut * 60 minuten / uur * 24 uur / dag = seconden / dag) set_transient ($ transient, $ count, 24 * 60 * 60);
De combinatie hiervan in één functie levert op:
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); if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ count = (int) $ json [0] -> followers_count; set_transient ($ transient, $ count, 24 * 60 * 60); return $ count;
Het aantal volgers is niet alleen overal beschikbaar voor gebruik op uw site, maar het wordt ook elke dag efficiënt opgeslagen om laadtijden te beteugelen.
De uiteindelijke code van de screencast - met een paar wijzigingen - is hieronder opgenomen:
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; if ($ json && isset ($ json [0]) && isset ($ json [0] -> followers_count)) $ 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; if ($ json) $ tweets = $ json; $ tweets retourneren; 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, $ matches) && isset ($ matches [1])) $ count = (int) $ matches [1]; return $ count; persoonlijke functie 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); retourneer $ gegevens;
Ik hoop dat dit een nuttige tutorial is geweest voor de WordPress Transient API. Laat gerust je reacties achter.