Wenn Sie eine Website oder Webanwendung erstellen, ist es eine ziemlich allgemeine Anforderung, dass Sie möglicherweise Daten von Websites oder Anwendungen von Drittanbietern abrufen müssen. Wenn diese Site oder Anwendung über eine API verfügt, ist dies eine hervorragende Möglichkeit, die erforderlichen Daten zu erhalten. Schauen wir uns also an, wie man das mit WordPress macht.
Bevor wir uns auf das Wesentliche konzentrieren, stellen wir sicher, dass wir mit ein paar Dingen auf dem neuesten Stand sind, angefangen mit dem, was eine API ist.
Im Sinne dieses Tutorials meinen wir, wenn wir "API" (Application Programming Interface) sagen, welche Wikipedia-Klassen als "Web-API" bezeichnet werden:
Eine serverseitige Web-API ist eine programmatische Schnittstelle zu einem definierten Anforderungsantwortsystem, die normalerweise in JSON oder XML ausgedrückt wird und über das Web verfügbar gemacht wird - meistens über einen HTTP-basierten Webserver.
Einfacher ausgedrückt: Mit einer API kann eine Anwendung vordefinierte Informationen (meistens im JSON- oder XML-Format) über eine Standard-Web-URL von einer Anwendung abfragen.
Ich habs? Ok, weiter…
Das Anfordern einer API an eine API kann mehrere Schritte umfassen, und Sie möchten möglicherweise zusätzliche Schritte hinzufügen, z. B. Fehlerprüfung, Zwischenspeicherung, Validierung usw.
Wikipedia definiert eine Wrapper-Funktion wie folgt:
Eine Wrapper-Funktion ist eine Funktion in einem Computerprogramm, deren Hauptzweck darin besteht, eine zweite Funktion mit wenig oder gar keiner zusätzlichen Berechnung aufzurufen. Dies wird auch als Methodendelegierung bezeichnet. Wrapper-Funktionen können für verschiedene Zwecke verwendet werden.
Diese Definition lässt den Eindruck erwecken, als seien Wrapper einfach redundanter Code, der aber weit davon entfernt ist.
Durch das Erstellen eines Wrappers für eine API können wir uns mit allen anfreunden. Lassen Sie mich erklären:
Wrapper machen den Umgang mit APIs entwicklerfreundlich und API-freundlich.
Die speziellen Dinge, die wir mit unserer API in Angriff nehmen werden, sind:
Wir werden diese Dinge auch auf WordPress-freundliche Weise durchführen, z. B. Transienten zum Zwischenspeichern verwenden wp_remote_request
zum Senden der API-Anfragen.
Die API, die wir für dieses Lernprogramm verwenden werden, ist die Envato Marketplace-API. Diese API enthält Informationen zu den Elementen und Benutzern auf den Envato-Marktplätzen, z. B. ThemeForest, CodeCanyon und anderen.
Wir werden unsere Entwicklung auf Public Sets aufbauen, wie in der Dokumentation der Envato Marketplace API zu sehen ist. Beachten Sie auch die Spalte TTL (time to live), die im Wesentlichen das "Ratenlimit" für diese API ist. Da sich die Daten nur mit dieser Frequenz ändern, gibt es keinen Punkt, der einen bestimmten Satz öfter als die angegebene TTL anfordert.
Beginnen wir also mit dem Aufbau der Basisklasse für die Kommunikation mit dieser API.
Da sich dies schließlich in einem Beispiel-Plugin befindet, auf das wir später noch näher eingehen werden, erstellen wir diese Dateistruktur und den API-Wrapper darin.
Unser Plugin zeigt die Ergebnisse des API-Sets "random-new-files" an, wir nennen es "Wptuts + Random New". Also in deinem wp-content / plugins / Verzeichnis, fahren Sie fort und erstellen Sie ein Verzeichnis namens wptuts-random-new.
Erstellen Sie nun in diesem Verzeichnis ein neues Verzeichnis mit dem Namen envato-api-wrapper, und eine Datei darin aufgerufen class-envato-api-wrapper.php. Dieses gesamte Verzeichnis kann dann in andere Projekte kopiert werden, die diese API auch in Zukunft benötigen.
Öffne das * class-envato-api-wrapper.php Datei und los geht's.
Zuerst definieren wir unsere Klasse:
Wir werden auch eine einfache Methode benötigen, um diesen Wrapper beim Erstellen zu testen, ohne dass er WordPress vollständig laden muss. Also, was ich getan habe, ist einfach eine
index.php
Datei in der envato-api-wrapper Verzeichnis mit folgendem Inhalt:Jetzt sollten Sie in der Lage sein zu browsen
http: // localhost / wp-content / plugins / wptuts-random-new / envato-api-wrapper /
(Ersetzen Sie "localhost" durch Ihre eigene Entwicklungsumgebung). Sie sollten jedoch noch nichts sehen, da der Wrapper noch nichts tut. Wenn Sie jedoch einen Fehler sehen, überprüfen Sie den Code.Hinweis: Vergessen Sie nicht, diese Datei zu entfernen oder auszublenden, bevor Sie sie für die Produktion bereitstellen!
3. Wo Sie Anfragen senden
Das erste, was Sie benötigen, bevor Sie eine Anforderung an eine API stellen, ist die zu verwendende Basis-URL. Dieser URL werden dann verschiedene Informationen hinzugefügt, bevor die Anfrage gesendet wird.
Im Falle der Envato Marketplace-API verwenden wir die folgende URL:
http://marketplace.envato.com/api/edge/set.jsonIn dieser URL befinden sich zwei Hauptinformationen für Informationen:
Edgde
undeinstellen
.Die Position von
Edgde
repräsentiert die Version der API, die wir verwenden möchten, und hier insbesondere die aktuellste Version. Es wird in allen Anfragen dasselbe sein, aber wenn sich etwas ändert und wir eine ältere Version verwenden wollten, könnten wir es austauschenv3
stattdessen zum Beispiel.Die Position von
einstellen
stellt den tatsächlichen Datensatz dar, den wir anfordern. Das Wort "Satz" ist ein Platzhalter, und wir werden ihn bei einer bestimmten Anforderung durch die relevanten Details ersetzen.Fügen wir eine Eigenschaft von hinzu
$ api_url
zu unserer Klasse mit diesem Wert:Beachten Sie, dass wir angegeben haben, dass diese Eigenschaft '
geschützt
'. Wir haben dies getan, weil wir nicht möchten, dass die URL direkt von anderem Code außerhalb unseres Wrappers geändert wird.4. Eine Anfrage stellen
Bevor wir versuchen, eine bestimmte Anforderung zu erstellen, fügen wir unserer Klasse eine generische Methode hinzu, die die Bearbeitung von Anforderungen behandelt. Wir werden es nennen
remote_request
, und alles, was es braucht, ist eine URL, an die die Anfrage gesendet werden soll.geschützte Funktion remote_request ($ url) // Wenn die URL leer ist, senden Sie keine Anforderung, wenn (empty ($ url)) return false; // Stellen Sie die Anfrage $ request = wp_remote_request ($ url); // Überprüfen Sie, ob WordPress die Anforderung senden konnte, andernfalls Fehler if (is_wp_error ($ request)) echo $ request-> get_error_message (); falsch zurückgeben; // Decodiere die Antwort, damit wir sie verwenden können $ data = json_decode ($ request ['body']); if ($ request ['response'] ['code'] == 200) return $ data; else return false;Beachten Sie, dass wir erneut darauf hingewiesen haben, dass diese Methode '
geschützt
', um zu verhindern, dass er direkt von außerhalb unserer Klasse angerufen wird.Um zu testen, ob die Anforderung funktioniert, fügen wir unsere erste API-Methode hinzu. In diesem Fall gehen wir mit der
zufällig neue Dateien
set, was wir später in unserem Beispiel-Plugin verwenden werden.Fügen Sie unserer Klasse die folgende Methode hinzu:
public function random_new_files ($ marketplace) // Erzeuge eine URL für diese Anforderung, indem der Platzhalter 'set' durch den Satz und die erforderlichen Parameter ersetzt wird. In diesem Fall ist der Slug eines Envato-Marktplatzes $ url = preg_replace ('/ set / i', 'random-new-files:'. $ Marketplace, $ this-> api_url); // Sende eine Anfrage an die API $ results = $ this-> remote_request ($ url); $ Ergebnisse zurückgeben;Um diese neue Methode zu testen und um die API-Anforderungsmethode zu erweitern, fügen Sie unserem Debugging die folgende Zeile hinzu index.php Datei:
Echo ''. print_r ($ envato_api-> random_new_files ('themeforest'), true). '';Jetzt sollten Sie eine ähnliche Ausgabe in Ihrem Browser erhalten:
stdClass-Objekt ([random-new-files] => Array ([0] => stdClass-Objekt ([id] => 4860464 [item] => Empire - Business, Portfolio HTML 5-Vorlage [url] => https: // themeforest.net/item/empire-business-portfolio-html-5-template/4860464 [user] => designthemes [thumbnail] => http://1.s3.envato.com/files/57931279/thumb-html. png [sales] => 0 [rating] => 0.0 [cost] => 15.00)… [9] => stdClass-Objekt ([id] => 4852371 [item] => eplie | Mobile HTML / CSS-Vorlagenvorlage [URL] ] => https://themeforest.net/item/eplie-mobile-htmlcss-portfolio-template/4852371 [Benutzer] => cosmincotor [thumbnail] => http://1.s3.envato.com/files/57831617 /thumbnail.png [Umsatz] => 3 [Bewertung] => 0.0 [Kosten] => 8.00)))Angenommen, Sie haben so etwas wie das oben Genannte gesehen, bedeutet es, dass es funktioniert und Sie Daten von der API erhalten haben. Erfolg!
Next: Caching, Fehlerbehandlung und ein Widget
Jetzt haben wir die Basis für den Wrapper erstellt, die Dinge sind im Gange. Im nächsten Teil beenden wir den Wrapper und erstellen ein Widget, das ihn verwendet.
Beachten Sie außerdem, dass, während dieser Wrapper für die Envato Marketplace-API erstellt wird, das gleiche Konzept (und ein großer Teil des gleichen Codes bisher) zum Erstellen eines Wrappers für jede RESTful-API verwendet werden kann.
Teilen Sie uns in den Kommentaren mit, welche Ideen Sie für die Arbeit mit APIs und WordPress haben.