So erstellen Sie ein Widget für aktuelle Tweets

In diesem Tutorial erfahren Sie, wie Sie ein Widget für die letzten Tweets erstellen. Das Repository enthält eine ganze Reihe von Plug-Ins, die sich auf Twitter beziehen. Ich hoffe jedoch, dass dieses Tutorial einige wichtige (und allgemein anwendbare) Methoden zum Erstellen eines solchen Plug-Ins (ob Twitter-basiert oder nicht) abdeckt..


Die Widget-Klasse

Die Widget-Klasse, WP_Widget, ist eine Hilfsklasse zum Erstellen von Widgets. Um ein Widget zu erstellen, erstellen Sie einfach eine Erweiterung dieser Klasse mit vier Methoden: __konstruieren, Widget, aktualisieren und bilden.

 Klasse WP_Widget_Wptuts_Twitter_Widget erweitert WP_Widget var $ w_arg; // Eine Klassenvariable zum Speichern eines Arrays unserer Widgeteinstellungen und ihrer Standardwerte. Funktion __construct ()  Funktions-Widget ($ args, $ instance)  Funktionsaktualisierung ($ new_instance, $ old_instance)  Funktionsformular ($ Instanz) 
  • __konstruieren initialisiert das Widget. Hier legen Sie die eindeutige ID, den Titel, die Beschreibung (für die Administratorseite) und die Klasse (n) des Widgets fest, die dem Container des Widgets im Frontend zugewiesen werden.
  • Widget - Die Methode, die für das Drucken des Widgetinhalts auf dem Frontend verantwortlich ist.
  • bilden - Diese Methode sollte die Einstellungen des Widgets im Formular Aussehen> Widget ausgeben
  • aktualisieren - Diese Funktion ist verantwortlich für Validierung die vom Widget-Formular gesendeten Optionen (über bilden). Das Array $ new_instance enthält die zu validierenden Optionen und das Array$ old_instance enthält die aktuell gespeicherten Optionen. Es erwartet, dass die überprüften Optionen zurückgegeben werden, oder false, um die Aktualisierung der Optionen abzubrechen.

Klassenbau

Wir beginnen mit dem Aufbau der Klasse. Um Ihre Widget (s) zu registrieren, müssen Sie sich an der Aktion anmelden widgets_init und Ruf an register_widget, den Namen der Widget-Klasse übergeben (WP_Widget_Wptuts_Twitter in diesem Fall). Dieser Ausschnitt befindet sich direkt nach unserer Widget-Klasse:

 add_action ('widgets_init', 'wptuts_register_widget'); Funktion wptuts_register_widget () register_widget ('WP_Widget_Wptuts_Twitter_Widget'); 

register_widget erstellt eine Instanz unseres Widgets und ruft die __konstruieren Methode. Dies sollte einige der Klassenkonstanten festlegen, beispielsweise eine eindeutige Kennung (die id_base) und die Konfigurationseinstellungen des Widgets, insbesondere:

  • Beschreibung - eine Beschreibung des Widgets (wird auf der Widget-Administratorseite angezeigt).
  • Klassenname - Klasse (n), die dem Klassenattribut des Widgets hinzugefügt werden sollen.

Sie können auch ein Array mit Steuerelementoptionen angeben. Auf diese Weise können Sie die Breite des Admin-Formulars des Widgets (normalerweise 250 Pixel) angeben, falls Sie mehr Platz benötigen. Ästhetisch ist es jedoch vorzuziehen, dies nicht zu ändern und Ihre Widgets nicht mit übermäßigen Optionen zu überladen.

Um diese Konfigurationen einzustellen, können Sie die verwenden WP_Widget :: __ Konstrukt Methode (d.h.. parent :: __ Konstrukt). Das erwartet:

  • ID-Basis - eine eindeutige Kennung für die Widget-Klasse
  • Name - Der Name Ihres Widgets, der im Admin-Bildschirm verwendet wird.
  • Widget-Optionen - Legt den Klassennamen und die Beschreibung fest.
  • Steuerungsoptionen - (optionales) Array mit Höhe und Breite des Widget-Formulars.

Dann (optional) können wir die Einstellungen des Widgets und deren Standardwerte festlegen.

 function __construct () $ widget_ops = array ('classname' => 'wptuts_widget_twitter', 'description' => __ ('Zeigt eine Liste der letzten Tweets an', 'wptuts_twitter')); parent :: __ construct ('WP_Widget_Wptuts_Twitter', __ ('Twitter', 'wptuts_twitter'), $ widget_ops); // Sett-Widget-Einstellungen und Standardwerte $ this-> w_arg = array ('title' => ", 'screen_name' =>", 'count' => '5', 'Published_when' => '1'); 

Sie sollten Ihren Widgets eine eindeutige Klasse geben, da dadurch sichergestellt werden kann, dass jedes von Ihnen gestaltete Styling Ziele bietet nur Ihr Widget.


Tweets abrufen

Bevor wir fortfahren, erstellen wir eine Hilfsmethode, die eine Anfrage an die Twitter-API sendet. Diese einfache Methode nimmt die Anforderung (eine URL) und verwendet die Funktion wp_remote_get um die Antwort abzurufen. wp_remote_get bildet einen Teil der HTTP-API, die in diesem Lernprogramm behandelt wurde.

Die Methode sucht dann nach Fehlern: Entweder wird sie von WordPress (mit is_wp_error) oder durch Twitter (durch Überprüfen des Antwortcodes). Mit der switch-Anweisung in der Methode können Sie je nach Code anders vorgehen. Im folgenden Beispiel werden alle Fehlerantworten in ein WordPress-Fehlerobjekt konvertiert. Andernfalls wird die erfolgreiche Antwort (ein Array mit Tweets) zurückgegeben.

Wenn Sie sowohl den Fehlercode als auch die Fehlermeldung beibehalten, kann das spätere Debuggen im Fehlerfall erheblich vereinfacht werden.

 Funktion retrieve_remote_tweets ($ request_url) $ raw_response = wp_remote_get ($ request_url, array ('timeout' => 1)); if (is_wp_error ($ raw_response)) gibt $ raw_response zurück; $ code = (int) wp_remote_retrieve_response_code ($ raw_response); $ response = json_decode (wp_remote_retrieve_body ($ raw_response)); Schalter ($ code): Fall 200: Rückgabe von $ response; Fall 304: Fall 400: Fall 401: Fall 403: Fall 404: Fall 406: Fall 420: Fall 500: Fall 502: Fall 503: Fall 504: Neuen WP_Error zurückgeben ($ code, $ response-> error); default: Rückgabe neuer WP_Error ($ code, __ ('Ungültige Antwort', 'wptuts_twitter')); Endschalter; 

Die Twitter-API

Twitter verfügt über eine umfangreiche Dokumentation zu seiner API, mit der Sie unter anderem Ihre neuesten Tweets, Tweets von Ihrer "Startseite" oder Tweets abrufen können, die einem Suchbegriff entsprechen. Einige der fortgeschritteneren API-Funktionen erfordern eine Authentifizierung über OAuth.

In diesem Tutorial suchen wir nach den Tweets eines bestimmten Benutzers (oder der Benutzerzeitleiste). Die URL zum Abrufen dieser Tweets hat eine sehr einfache Struktur:

 https://api.twitter.com/1/statuses/user_timeline.json?screen_name=screen-name&arg1=val1&arg2=val2

woher Künstlername sollte der Bildschirmname des Benutzers sein und die anderen Argumente können die hier aufgeführten sein. Typische Argumente wie include_entities würde auf true gesetzt, um Metadaten zu den Tweets (z. B. URLs oder Hashtags) zu erhalten..


Caching

Twitter beschränkt die Anzahl der Anfragen, die Sie stellen können: 150 pro Stunde für nicht authentifizierte Anfragen und 350 ansonsten. Nicht nur das, auch das Abrufen der Tweets braucht Zeit und erhöht die Ladezeit Ihrer Website. Das Abrufen Ihrer Tweets von Twitter bei jedem Laden einer Seite ist unnötig teuer. Dies gilt insbesondere, wenn Ihre Tweets nicht unmittelbar nach der Veröffentlichung auf Ihrer Website angezeigt werden müssen.

Caching, insbesondere Transienten von WordPress, können verwendet werden, um Ihre Tweets (oder beliebige Daten für diese Angelegenheit) lokal in Ihrer Datenbank zu speichern. Das Abrufen von Daten aus der Datenbank ist viel schneller als das Remote-Abrufen, und es trägt zu keinem API-Limit bei. Natürlich werden die Daten bald veraltet. Deshalb ist das Abspeichern zusammen mit den Tweets eine Ablaufzeit.

Die Idee ist, dass Sie beim Anzeigen Ihrer Tweets, wenn die Daten abgelaufen sind (oder die Tweets nicht in der Datenbank vorhanden sind), diese von Twitter abrufen und den Cache aktualisieren. Auf diese Weise können Sie die Anzahl der Anfragen an Twitter auf alle 20 Minuten, Stunde oder Tag beschränken. Dies hängt davon ab, wie lange Sie warten möchten, bis Ihre Tweets aktualisiert werden. Außerdem erhalten Sie, wenn die Tweets nicht aktualisiert werden, kürzere Ladezeiten. Wenn die Zwischenspeicherung ordnungsgemäß verwendet wird, können Sie die Leistung Ihrer Plug-Ins oder Themes verbessern. Wenn Sie es noch nicht verwendet haben, würde ich empfehlen, dieses Video anzuschauen und dieses Tutorial zu befolgen.

Nehmen Sie jedoch an, dass Ihr Tweet-Cache abläuft und der Twitter-Service zur Wartung ausfällt. Die Tweets werden aus der Datenbank gelöscht. Sie können jedoch keine Tweets von Twitter abrufen, um sie zu ersetzen. Daher werden sie nicht angezeigt. Die Lösung dafür ist 'Soft Caching'.


Soft Caching

Soft-Caching versucht wie das Caching, Ihre Tweets nach Ablauf einer bestimmten Zeit zu aktualisieren. Im Gegensatz zum "harten" Caching werden die vorherigen Daten jedoch erst gelöscht, wenn eine gültige Antwort empfangen wird, mit der sie ersetzt werden sollen. Das Ergebnis ist, dass die API von Twitter nicht verfügbar sein sollte. Auf Ihrer Website werden weiterhin die Tweets der letzten erfolgreichen Aktualisierung angezeigt.

Soft-Caching wird von WordPress nicht nativ unterstützt, aber Mark Jaquith und Aaron Campbell haben eine hervorragende Klassenimplementierung hervorgebracht. Ich werde eine etwas vereinfachte Methode verwenden, von der ich hoffe, dass Soft Caching in WordPress funktionieren kann.

Die Idee ist, den Ablauf des Transienten manuell zu behandeln. Anstatt die Tweets transient mit Ablaufzeit zu speichern, speichern Sie ein Array mit den Tweets und die Ablaufzeit innerhalb eines Übergangs, der keine Ablaufzeit hat. Wir können diese Methode implementieren, indem Sie anstelle von die folgende Funktion verwenden set_transient.

 Funktion set_twitter_transient ($ key, $ data, $ expiration) // Zeit, zu der der Transient abläuft $ expire = time () + $ expiration; set_transient ($ key, array ($ expire, $ data)); 

Ohne Ablaufzeit werden die Daten natürlich nie (oder tatsächlich nicht garantiert) entfernt und durch neue Daten ersetzt. Wir müssen uns jetzt selbst darum kümmern.

Wenn Sie diesen nicht ablaufenden Transient abrufen, prüfen Sie, ob die gespeicherte Ablaufzeit verstrichen ist. Wenn ja, dann Versuch um die neuen Tweets mit der obigen Methode abzurufen retrieve_remote_tweets. Wenn dies erfolgreich ist, aktualisieren Sie den Transienten (mit den neuen Daten und einer neuen Ablaufzeit) und verwenden diese neuen Daten. Ist dies nicht der Fall, verwenden Sie einfach die aktuell gespeicherten Daten, bis Sie eine erfolgreiche Antwort von Twitter erhalten.

Um die Tweets (remote oder lokal) abzurufen und den Cache zu bearbeiten, definieren wir die Methode get_tweets. Dies erfordert ein Array von Argumenten, mit dem die Twitter-Anfrage generiert wird. Zum Beispiel:

  • Künstlername - den Namen des Twitter-Kontos für folgen
  • Anzahl - die Anzahl der abzurufenden Tweets
  • include_rts - 1 | 0 - 1 für Retweets, 0 für Retweets.

Die Methode verwendet dann add_query_arg um die Anforderungs-URL zu erstellen, und generiert daraus einen Schlüssel für unseren Transienten. Dies ist wichtig, da Sie den gleichen Schlüssel für eine andere Konfiguration des Widgets verwenden möchten, insbesondere wenn Sie mehrere Instanzen des Widgets haben.

In dieser Funktion ist eine Ablaufzeit von 1 Stunde fest codiert.

 function get_tweets ($ args) // Build-Anforderungs-URL $ args ['screen_name'] = '@'. $ args ['screen_name']; $ request_url = 'https://api.twitter.com/1/statuses/user_timeline.json'; $ request_url = add_query_arg ($ args, $ request_url); // Schlüssel generieren $ key = 'wptt _'. Md5 ($ request_url); // läuft jede Stunde ab $ Verfall = 60 * 60; $ transient = get_transient ($ key); if (false === $ transient) // Endgültiger Ablauf $ data = $ this-> retrieve_remote_tweets ($ request_url); if (! is_wp_error ($ data)) // Transiente aktualisieren $ this-> set_twitter_transient ($ key, $ data, $ expiration);  Rückgabe von $ data;  else // weicher Ablauf. $ transient = Array (Ablaufzeit, Daten) if ($ transient [0]! == 0 && $ transient [0] <= time() )  // Expiration time passed, attempt to get new data $new_data = $this->retrieve_remote_tweets ($ request_url); if (! is_wp_error ($ new_data)) // Bei erfolgreicher Aktualisierung vor und neuen Daten $ this-> set_twitter_transient ($ key, $ new_data, $ expiration); $ transient [1] = $ new_data;  return $ transient [1]; 

Wenn Sie die transiente API von WordPress verwenden, prüfen Sie, ob get_transient findet Ihre Daten im Cache und ruft die Daten (z. B. von Twitter) ab und generiert sie, und aktualisiert sie dann vorübergehend. Jedoch die get_tweets Die obige Methode behandelt das alles - und gibt Ihre 'alten Daten' zurück, wenn sie nicht aktualisiert werden kann. Es ist jedoch immer noch nicht garantiert, dass Daten zurückgegeben werden. Möglicherweise befinden sich in der Datenbank keine Tweets (z. B. werden sie zum ersten Mal ausgeführt), und sie erhalten keine erfolgreiche Antwort von Twitter. In diesen Fällen a WP_Error Das Objekt wird zurückgegeben - und wir müssen sicherstellen, dass Ihr Plug-in damit umgeht und sich grausam verschlechtert.


Die Form

Die Aufgabe der Formularmethode besteht darin, das Optionsformular des Widgets auf der Seite Aussehen> Widget anzuzeigen. Es übergibt die aktuell gespeicherten Optionen als Argument (Array). Natürlich kannst du dann verwenden wp_parse_args 'fehlende' Werte durch Standardwerte ersetzen.

Im Allgemeinen sollte das Widget-Formular ziemlich klein sein (und sich oft in der schmalen Seitenleiste befinden) - dies kann mit den zuvor genannten Steuerungsoptionen vergrößert werden. Es wird jedoch bevorzugt, dass Sie sich an die Ästhetik von WordPress halten. Aus diesem Grund folge ich dem Layout des Standard-Widget von WordPress.

Ich werde auch die Methoden anwenden $ this-> get_field_id und $ this-> get_field_name Um die Namen und ID-Werte für die Eingaben für jede Instanz eines Widgets zu generieren, kann WordPress ihre Verarbeitung für uns erledigen.

In diesem Beispiel gestatte ich dem Benutzer, einen Titel für das Widget anzugeben, den Namen des Tweets, dessen Tweets angezeigt werden sollen, eine maximale Anzahl von Tweets und ob der Tweet beim Erscheinen des Tweets mit eingeschlossen werden soll.

 function form ($ instance = array ()) // $ instance mit den Standardwerten zusammenführen $ instance = extract (wp_parse_args ((array) $ instance, $ this-> w_arg)); ?> 

type = "checkbox" value = "1" />


Optionen Validierung

Nachdem Sie das Formular erstellt haben, müssen Sie die Widget-Optionen beim Speichern aktualisieren. Das meiste erledigt WordPress für uns - aber wir müssen es noch tun bestätigen die Daten. Die Validierung wurde in diesem Artikel ausführlich behandelt. Wenn Sie sich nicht sicher sind, was Sie tun müssen oder wie Sie Ihre Daten validieren müssen, würde ich Ihnen empfehlen, die Informationen zu überprüfen.

Was auch immer von dieser Funktion zurückgegeben wird, wird der Datenbank hinzugefügt. Daher sollten wir nicht nur die Daten überprüfen, sondern auch nur die Daten enthalten, die wir erwarten. Eine gute Technik ist, mit einem leeren Array zu beginnen und nur validierte Daten hinzuzufügen. Wenn Sie das Speichern abbrechen möchten, können Sie zurückkehren falsch.

 Funktionsaktualisierung ($ new_instance = array (), $ old_instance = array ()) $ validated = array (); $ validated ['title'] = sanitize_text_field ($ new_instance ['title']); $ validated ['screen_name'] = preg_replace ('/ [^ A-Za-z0-9 _] /', ", $ new_instance ['screen_name']); $ validated ['count'] = absint ($ new_instance [' count ']); $ validated [' Published_when '] = (isset ($ new_instance [' Published_when '])? 1: 0); return $ validated;

Der Bildschirmname wird validiert, indem Sie alles außer alphanumerischen Zeichen und Unterstrichen entfernen.


Widget anzeigen

Schließlich kommen wir zu der Methode zum Anzeigen des Widgets. Alle Teile sind vorhanden, alles was übrig bleibt, ist den Widget-Inhalt selbst zu erzeugen. Das Widget Die dafür verantwortliche Methode übergibt zwei Argumente: Das erste ist ein Array von Argumenten, die den Widget-Einstellungen der Seitenleiste entsprechen - einschließlich der Anzeigeargumente vor_titel, after_title, before_widget, und after_widget. Die zweite ist die Einstellungen für diese bestimmte Instanz des Widgets - dies ist ein Array der Einstellungen, die in unserem Formular gespeichert wurden.

Ich werde eine andere Hilfsfunktion verwenden, um die Liste der Tweets zu generieren. Das Folgende sollte jedoch die Gliederung aller Widgets sein:

 Funktions-Widget ($ args, $ instance) extract ($ args); $ title = apply_filters ('widget_title', $ instance ['title']); echo $ before_widget; echo $ before_title.esc_html ($ title). $ after_title; echo $ this-> generate_tweet_list ($ instance); echo $ after_widget; 

Das generate_tweet_list Methode ruft einfach die Tweets mit ab get_tweets - Wenn keine Fehler aufgetreten sind, werden die Tweets durchlaufen und in einer Liste angezeigt. Für jeden Tweet wird die Methode angewendet make_clickable - Dadurch wird der Tweet gescannt und jeder Bildschirmname, Hashtag oder Link wird zu einem Link (siehe unten)..

Abhängig von den Einstellungen hängt es auch an, wenn der Tweet mit der WordPress-Funktion veröffentlicht wurde human_time_diff.

 Funktion generate_tweet_list ($ args = array ()) $ args = shortcode_atts (array ('include_entities' => 'true', 'include_rts' => 1, 'screen_name' => ", 'count' => 5, 'Published_when '=> 1), $ args); // Tweets abrufen $ tweets = $ this-> get_tweets ($ args); $ content ='
    '; if (is_wp_error ($ tweets) ||! is_array ($ tweets) || count ($ tweets) == 0) $ content. = '
  • '. __ ('Keine Tweets verfügbar', 'wptuts_twitter'). '
  • '; else $ count = 0; foreach ($ tweets als $ tweet) $ content. = '
  • '; $ content. = "". $ this-> make_clickable ($ tweet)."
    "; if ($ args ['Published_when']) $ content. =""; $ href = esc_url (" http://twitter.com/$tweet->user->screen_name/statuses/$tweet->id_str "); $ time_diff = human_time_diff (strtotime ($ tweet-> hergestellt in)).' vor '; $ content. = "". $ time_diff. ""; $ content. =''; $ content. = '
  • '; if (++ $ count> = $ args ['count']) break; $ content. = '
'; // wp_enqueue_script ('wptuts_twitter_script'); // wp_enqueue_style ('wptuts_twitter_style'); $ content zurückgeben;

Sie werden feststellen, dass ich Anrufe zu eingeschlossen habe wp_enqueue_script und wp_enqueue_style. Diese sind auskommentiert, da ich kein Styling oder Skripte verwenden musste. Seit 3.3 können Sie diese Funktionen jedoch verwenden, während der Text der Seite generiert wird (d. H. In Widget- oder Shortcode-Rückrufen). Wenn ich Skripts für dieses Widget in die Warteschlange stellen müsste, wird sichergestellt, dass sie nur dann geladen werden, wenn sie tatsächlich benötigt werden. Sie sollten sicherstellen, dass Sie nicht unnötig Skripte und Stile laden.


Machen Sie klickbar

Hier definieren wir die Methode make_clickable. Dies nimmt ein Tweet-Objekt und gibt den Inhalt des Tweets zurück, nachdem alle URLs, Hashtags, Benutzer oder Medien-URLs durch einen entsprechenden Link ersetzt wurden. Da haben wir eingestellt include_entities wahr, das Tweet-Objekt enthält die 'Entitäten' des Tweets. Eine Entität ist eine URL, ein Benutzer, ein Hashtag oder ein Medium, das im Tweet enthalten ist. Dazu verwenden wir die Funktion ohne Berücksichtigung der Groß- und Kleinschreibung str_ireplace.

 Funktion make_clickable ($ tweet) $ entity = $ tweet-> entity; $ content = $ tweet-> text; // Machen Sie Links anklickbar, wenn (! Leere ($ Entitäten-> URLs)) foreach ($ Entitäten-> URLs als $ url) $ content = str_ireplace ($ url-> url, 'expand_url).' "> ' . $ url-> display_url. '', $ content); // Lassen Sie alle Hashtags anklickbar, wenn (! empty ($ entity-> hashtags)) foreach ($ entity-> hashtags als $ hashtag) $ url = 'http://search.twitter.com/search?q='. urlencode ($ hashtag-> text); $ content = str_ireplace ('#'. $ hashtag-> text, '#'. $ hashtag-> text . '', $ content); // Machen Sie alle Benutzer anklickbar, wenn (! empty ($ entity-> user_mentions)) foreach ($ entity-> user_mentions as $ user) $ url = 'http: // twitter .com / '. urlencode ($ user-> screen_name); $ content = str_ireplace ('@' .$ user-> screen_name, '@'. $ user-> screen_name. '', $ content); // Machen Sie Medien-URLs anklickbar, wenn (! Empty ($ entity-> media)) foreach ($ entity-> media als $ media) $ content = str_ireplace ($ media-> url, 'expand_url).' ">". $ media-> display_url. '', $ content);  return $ content; 

Das fertige Produkt (abhängig von der Gestaltung Ihres Themas) sollte ungefähr so ​​aussehen:


Kurzcode

In diesem Tutorial habe ich versucht, an einem grundlegenden, aber wichtigen Prinzip festzuhalten: Trennung von Bedenken. Unsere Klasse besteht aus einer Sammlung von Methoden und die Idee ist, dass jede Methode für einen bestimmten Zweck verantwortlich sein sollte. Ich habe einen Rückruf zum Anzeigen der Gliederung des Widgets, das aufgerufen wird generate_tweet_list um die Liste selbst zu erstellen, die verwendet get_tweets um die Tweets abzurufen - selbst mit retrieve_remote_tweets um direkt mit der Twitter API zu interagieren.

Dafür gibt es mehrere Gründe:

  • Lesbarkeit - Das Brechen von Code in kleinere Abschnitte erleichtert das Lesen und das Debuggen
  • Verringerung der Duplizierung von Code - Ohne meinen Code zu trennen, wenn ich zwei Methoden hätte, die versuchen, Tweets von Twitter abzurufen, müssten beide alle erforderlichen Überprüfungen und die Cache-Behandlung einschließen. Indem sie meine Funktionen wie gezeigt voneinander trennen, könnten sie beide verwenden get_tweets Methode.
  • Einfach zu bearbeiten - Wenn Twitter jemals ihre API ändert, muss ich jetzt nur noch eine Funktion bearbeiten und ich kann sicher sein, dass der Rest des Plug-Ins weiterhin einwandfrei funktioniert.
  • Erweiterbarkeit - Das Layout dieses Codes ähnelt eher Lego als Knetmasse. Lego ist viel besser. Wir haben jetzt eine Sammlung von 'Lego Brick' Funktionen, mit denen wir mehr Dinge machen können.

Um den letzten Punkt zu veranschaulichen. Wir haben ein Widget erstellt, das eine Liste der letzten Tweets anzeigt. Aufgrund der Trennung der Bedenken können wir mit nur wenigen zusätzlichen Zeilen (außerhalb der Klasse hinzugefügt) einen Shortcode erstellen, der genau dasselbe bewirkt:

 Funktion wptuts_twitter_shortcode_cb ($ atts) $ args = shortcode_atts (array ('screen_name' =>, 'count' => 5, 'Published_when' => 5, 'include_rts' => 1,), $ atts); $ tw = new WP_Widget_Wptuts_Twitter_Widget (); return $ tw-> generate_tweet_list ($ args); add_shortcode ('wptuts_twtter', 'wptuts_twitter_shortcode_cb');

Die Tweets können dann mit dem Shortcode angezeigt werden: [wptuts_twtter screen_name = "stephenharris88"]. Es akzeptiert auch die Attribute Anzahl, Published_when und include_rts.

Wir haben auch die sehr nützliche und generische Methode retrieve_remote_tweets die mit Twitter auf beliebige Weise interagieren können. Mit der Fehlermeldung wird entweder eine gültige Antwort oder ein WordPress-Fehlerobjekt zurückgegeben.


Letzte Kommentare

Die bereits erwähnte Klasse WP-TLC-Transients ist eine allgemeinere Implementierung von Soft-Caching, mit der Sie Funktionen angeben können, mit denen der Cache aktualisiert werden soll. Es führt auch eine Hintergrundaktualisierung durch: Aktualisieren des Caches nur, wenn die Seite geladen ist. Die Klasse ist so konzipiert, dass sie in Plug-Ins (nach dem Umbenennen, um Konflikte zu vermeiden) übernommen werden kann. Dies ermöglicht eine effiziente Handhabung des Soft-Caching. In der Tat ist dies das, was Aaron Campbells Twitter Widget Pro Plugin macht.

Hinweis: Wenn Sie Shared Hosting verwenden, können andere Websites Ihre IP-Adresse freigeben. Twitter API-Anfragen von diesen Websites tragen zu Ihrem Preislimit bei. Wenn Sie feststellen, dass Ihre Rate ständig begrenzt ist, ist dies wahrscheinlich die Ursache.

Das in diesem Lernprogramm erstellte Plug-In ist auf meinem GitHub verfügbar.