Mit wechselnden, zwischengespeicherten Daten arbeiten? WP-Transients hat deinen Rücken!

Das Ändern von Daten ist immer auf einer WordPress-basierten Site vorhanden. Sei es ein neuer Beitrag, ein zusätzlicher Kommentar oder ein aktualisierter Tweet für die Startseite, der Status eines Blogs wird ständig geändert. Da solche Daten häufig für einen Besucher nützlich sind, besteht die Notwendigkeit, sie anzuzeigen. Dies wird jedoch von der Tatsache geplagt, dass dynamische Informationen - insbesondere aus externen Quellen - zu langsameren, belasteten Websites führen. Wenn es um diese Probleme geht, hat Sie die WordPress Transient-API mit dem robusten Caching abgedeckt. Der folgende Screencast zeigt genau, wie Sie die Funktionen nutzen können.


Screencast


Schritt 1 Holen Sie sich den Transienten nach Namen

Greifen Sie auf einen Transienten zu, indem Sie dem einen Namen geben get_transient () Funktion. Mach dir keine Sorgen; Obwohl Sie noch keine erstellt haben, ist dies immer noch der erste Schritt! In unserem Beispiel erhalten wir eine Twitter-Follower-Anzahl.

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

Schritt 2 Prüfen Sie, ob der Transient abgelaufen ist

Wenn der Rückgabewert von get_transient () ist false, der Transient ist entweder abgelaufen (basierend auf dem in Schritt 3 erläuterten Zeitparameter) oder wurde nie an erster Stelle gesetzt:

 if (false === $ count) // Transient ist abgelaufen; Weiter mit Schritt 3

Schritt 3 Wenn abgelaufen, legen Sie die Transiente fest

Wenn ein Übergang abläuft, muss er zurückgesetzt werden. die Daten müssen also aktualisiert werden. Rufen Sie dazu zuerst die neuen Daten ab. In diesem Fall erhalten Sie die Follower-Anzahl über das Twitter-API gemäß dem 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;

Speichern Sie es jetzt mit set_transient () Funktion. Beachten Sie, dass dies als Parameter einen Namen, einen Wert und eine Ablaufzeit in Sekunden erfordert. Nach dieser Zeit ist vergangen, get_transient () wird false zurückgeben und diesen Schritt erneut auslösen:

 // Ablauf in 1 Tag (60 Sekunden / Minute * 60 Minuten / Stunde * 24 Stunden / Tag = Sekunden / Tag) set_transient ($ transient, $ count, 24 * 60 * 60);

Schritt 4 Setzen Sie alles zusammen

Wenn Sie dies zu einer Funktion kombinieren, erhalten Sie:

 Funktion 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; 

Die Anzahl der Follower kann nicht nur überall auf Ihrer Site verwendet werden, sondern wird auch jeden Tag effizient zwischengespeichert, um die Ladezeiten zu reduzieren.


Schlusscode aus dem Video

Der endgültige Code aus dem Screencast - mit einigen Änderungen - ist unten aufgeführt:

 Klasse WPTuts_Transients öffentliche Funktion WPTuts_Transients ()  öffentliche Funktion 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 = falsch; 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 zurückgeben;  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 = falsch; if (preg_match ('~ Circulation = "(\ d +)" ~', $ data, $ stimmt überein) && isset ($ entspricht [1])) $ count = (int) $ passt [1]; return $ count;  private Funktion prozient_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);  Rückgabe von $ data; 

Vielen Dank

Ich hoffe, dass dieses Tutorial für die WordPress Transient API hilfreich war. Fühlen Sie sich frei, Ihre Kommentare unten zu hinterlassen.