Steigern Sie Ihren WordPress-Workflow mit der REST-API

REST-API

In den letzten 12 Jahren hat sich WordPress von einem kleinen Nebenprojekt zu einer Tour de Force entwickelt. Dies geht aus den Hunderten von hervor WordPress-Themes und WordPress-Tutorials das sind jetzt verfügbar. Jüngste Studien schätzen, dass fast ein Viertel aller sichtbaren Websites im Web damit betrieben werden. Während WordPress gewachsen ist, haben sich Websites weiterentwickelt.

Wir haben den Aufstieg von Webanwendungen gesehen, die einfache HTML-Seiten verwenden und diese mit komplexen JavaScript- und API-Interaktionen erweitern. Dies hat dazu geführt, dass Websites und Software weit über das bloße Veröffentlichen hinausgehen und Websites als vollständige Plattformen verwenden. In der Zwischenzeit hat WordPress das Erstellen traditioneller Websites abgeschwächt, aber es gab keine Standardoption für diejenigen, die diese Funktionalität benötigen. Zumindest nicht bis jetzt.



Weitere APIs finden Sie in unseren Leitfäden JavaScript-APIs , HTML-APIs und Google APIs .

In den letzten drei Jahren hat ein kleines Team von Hauptmitarbeitern an einer Lösung für dieses Problem gearbeitet: der REST-API ( wp-api.org ). Das Projekt startete Ende 2012 und wurde Mitte 2013 zu einem offiziellen Google Summer of Code-Projekt. Seitdem wurde das Plugin vom Feature-Team mit über 70 Mitwirkenden aktiv entwickelt.

REST-API

Eine Demo der API mit einer Konsole finden Sie unter demo.wp-api.org

Derzeit ist der Kern der API in WordPress integriert, sodass Benutzer APIs für Plugins und Themes erstellen können. Es ist auch möglich, die API für die Entwicklung zu verwenden, indem Sie einfach das von WordPress.org verfügbare Feature-Plugin installieren. Dies ist Teil eines neuen Stils der WP-Entwicklung, bei dem Funktionen als installierbare Plugins entwickelt werden, damit Sie sie vor der Veröffentlichung ausprobieren können.

Die vollständige Integration ist für WordPress 4.5 geplant und stellt die API für jede Site zur Verfügung. Die REST-API wurde bereits von Produktionswebsites, einschließlich der Live-Blogging-Plattform von Wired.com und der New York Times, häufig verwendet.

Einrichten

Obwohl die API zum Zeitpunkt des Schreibens noch nicht fertiggestellt ist, können wir heute damit beginnen. Da es sich nur um ein reguläres Plugin für WordPress handelt, können Sie den gleichen Installationsprozess wie bei normalen Plugins durchführen.

Um mit Version 2 der API arbeiten zu können, müssen Sie Laden Sie das Plugin herunter .

Für die erweiterten Schritte zum Erstellen und Aktualisieren benötigen Sie die Basic Auth Plugin . Sie sollten auch sicherstellen, dass Sie hübsche Permalinks haben - obwohl es möglich ist, die API ohne diese zu verwenden, macht es die Dinge etwas komplizierter.

REST-API

JSONView kann in Ihrem Browser installiert werden, um das Anzeigen von JSON-Daten etwas zu vereinfachen

Sobald Sie das Plugin aktiviert haben, ist die API unter / wp-json / auf Ihrer Site verfügbar. Wenn sich Ihre Site beispielsweise unter http://example.com/ befindet, ist die API unter http://example.com/wp-json/ verfügbar. Wenn sich Ihre Website unter http://example.org/foo/ befindet, ist die API unter http://example.org/foo/wp-json/ verfügbar. Dies wird als API-Root bezeichnet, und wir werden es häufig verwenden. Denken Sie also daran.

Zur Anzeige in Ihrem Browser können Sie installieren JSONView , verfügbar für Firefox und Chrome. Auf diese Weise können Sie die verfügbaren Daten anzeigen und durch die Links in der API klicken, um alle verfügbaren Daten zu finden.

REST-API

Postman ist ein REST-API-Client, der die Interaktion mit APIs vereinfacht. Hier senden wir die POST-Anfrage, um einen neuen Beitrag zu erstellen

Für eine erweiterte Verwendung Postbote für Chrome oder Pfote für Mac sind API-Clients mit vollem Funktionsumfang, mit denen Sie auf komplexere Weise mit der API arbeiten können. Im Moment werde ich JSONView verwenden, um einfach Daten anzuzeigen.

REST-API

Paw ist ein eigenständiger REST-API-Client mit vollem Funktionsumfang. Es enthält die Codegenerierung für viele Sprachen

Nachdem wir die API installiert haben, können wir mit dem Betrachten der Daten beginnen. Im API-Stammverzeichnis finden Sie den Index. Auf diese Weise erhalten Sie einige Informationen zur Site und zur API selbst, einschließlich verfügbarer Authentifizierungsmethoden und Plugin-APIs.

Sie werden auch eine Liste der verfügbaren 'Routen' bemerken. Routen sind die URLs, mit denen Sie über die API auf die verschiedenen Objekte und Sammlungen (Objektlisten) zugreifen. Dies umfasst alle Kernobjekte in WordPress: Beiträge, Kommentare, Begriffe und Benutzer.

Werfen wir einen Blick auf die Route der Posts. Im Index sehen Sie eine Route mit dem Namen / wp / v2 / posts. Diese Route ist eine Sammlung, die eine Reihe von Objekten auflistet und Links zu den einzelnen Elementen enthält. Über die Route / wp / v2 / posts können Sie auf alle auf der Site verfügbaren Posts zugreifen. Es bietet auch die Möglichkeit, dies nach unten zu filtern, um alle Post-Daten auf der Site zu durchsuchen und zu durchsuchen.

Dies gibt Ihnen die Flexibilität von WP_Query über die API, einschließlich Textsuche, Filtern nach Autor und Abfragen nach Tags und Kategorien. Klicken Sie sich durch die Posts-Route oder gehen Sie nach Ihrem API-Stammverzeichnis zu / wp / v2 / posts (z. B. 'example.com/wp-json/wp/v2/posts').

Sie sollten sich so etwas ansehen:

[ { 'id': 89, 'date': '2015-06-26T02:44:23', 'title': { 'rendered': 'Hello world!', }, 'content': { 'rendered': '

Welcome to WordPress. ...

' }, ... } { 'id': 1, 'date': '2015-06-03T22:12:40', ... } ]

Dies ist eine JSON-Liste (gekennzeichnet durch eckige Klammern und durch Kommas getrennte Elemente) der verschiedenen Beiträge, die Sie auf Ihrer Site haben. Standardmäßig ist die Anzahl der Elemente auf 10 begrenzt. Jeder Beitrag ist ein JSON-Objekt (in geschweiften Klammern angegeben), das Daten über den Beitrag und die darauf verfügbaren Felder enthält.

Die Daten hier sind im Grunde alles, was WordPress in Bezug auf das Objekt weiß. Bei Posts umfasst dies normale Felder wie Titel und Inhalt des Posts, Veröffentlichungsdatum und -status sowie benutzerdefinierte Metas und Tags, die an den Post angehängt sind. Sie sehen auch Links zu dem einzelnen Beitrag, die wie / wp / v2 / posts / 42 aussehen, wobei 42 die Beitrags-ID ist.

Alle von der API zurückgegebenen Daten folgen demselben Muster. WordPress-Objekte werden durch JSON-Objekte dargestellt. Sie können direkt über den einzelnen Link (der wie / wp / v2 // aussieht) auf diese zugreifen, oder Sie können auf die Sammlung zugreifen, zu der sie gehören (dies sieht aus wie / wp / v2 /). Der einzelne Link ist immer ein Objekt, und die Sammlung ist immer eine Liste von Objekten.

Schreiben Sie das Web

Die REST-API dient nicht nur zum Abrufen von Inhalten und Daten aus WordPress. Es kann auch zum Schreiben neuer oder zum Aktualisieren vorhandener Beiträge verwendet werden. Aber keine Angst, es ist wirklich super einfach!

Das Eingabeformat für Daten entspricht dem Ausgabeformat. Um einen Beitrag zu aktualisieren, können Sie einfach die genauen Daten zurücksenden, die Sie gerade erhalten haben. Alle Felder, die Sie ändern möchten, werden jedoch mit neuen Daten gefüllt. Wenn Sie es einfach halten möchten, können Sie auch nur die geänderten Felder zurücksenden. Diese Daten werden als JSON-Objekt gesendet, so wie Sie es erhalten haben.

Früher, als wir Daten für ein Objekt abrufen wollten, haben wir in unserem Browser darauf zugegriffen. Hinter den Kulissen wurde eine GET-Anfrage über HTTP gesendet, bei der der Server aufgefordert wurde, die Daten für die angegebene URL (Ressource) abzurufen. Mit REST verwenden wir POST zum Erstellen, was Ihnen bekannt ist, wenn Sie jemals ein HTML-Formular geschrieben haben. Für die Aktualisierung verwenden wir PUT, das ähnlich wie POST funktioniert.

Welche Schriftart filtern Sie Instagram?

Zu Beginn erstellen wir einen neuen Beitrag. Zu diesem Zweck möchten wir eine POST-Anfrage mit den folgenden Daten an / wp / v2 / posts auf unserer Site senden:

{ 'title': 'Hello!', 'content': 'Hi, this is my new post.' }

Um dies tatsächlich zu erstellen, müssen wir auch die Authentifizierung senden. Der einfachste Weg, dies zu tun, ist die Verwendung der HTTP Basic-Authentifizierung, bei der Ihr Benutzername und Ihr Kennwort im Klartext übergeben werden. Dies ist nicht die sicherste oder sicherste Methode zur Authentifizierung, aber für die Entwicklung in Ordnung (weitere Informationen hierzu finden Sie im Boxout auf Seite 120). Dies ist nicht in die API integriert, daher müssen Sie sicherstellen, dass das Basic Auth-Plugin aktiviert ist. Bei der Standardauthentifizierung wird Benutzername: Kennwort als Zeichenfolge verwendet, die dann vor der Übergabe des Headers Base64-codiert wird.

So sollte unsere Anfrage mit Headern und unserem Körper aussehen:

POST /wp-json/wp/v2/posts Host: example.com Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= {'title':'Hello!','content':'Hi, this is my new post.'}

Wenn wir dies an den Server senden, sollten wir einen Beitrag zurückerhalten, der genau wie der zuvor erhaltene aussieht, einschließlich eines Postdatums, automatisch generierter Auszüge und Autorendaten. Dies sollte Ihnen auch einen 201 erstellten Statuscode sowie einen Standort-Header zurückgeben, der angibt, wo Sie auf den Beitrag zugreifen können (dies ist eine URL, die wie folgt aussieht: http://example.com/wp-json/wp/v2/posts/42 ).

{ 'id': 42, 'title': { 'rendered': '

Hi, this is my new post.

', } 'status': 'draft', 'date': '2015-05-01T04:50:00', ... }

Wenn Sie Ihren Site-Administrator überprüfen, sollten Sie jetzt sehen, dass der Beitrag in Ihrem Dashboard angezeigt wurde. Herzliche Glückwünsche! An den Beitrag sind eine Reihe von Standarddaten angehängt, z. B. der Kommentarstatus, der automatisch generierte Slug und der Sticky-Status. Sie werden feststellen, dass der Beitrag standardmäßig auch den Entwurfsstatus hat, sodass er noch nicht auf Ihrer Live-Site angezeigt wird.

Lassen Sie uns das beheben, indem wir den zuvor erhaltenen Beitrag nehmen und veröffentlichen. Dazu müssen wir den gerade erhaltenen Beitrag aktualisieren. Um Elemente zu aktualisieren, senden wir eine PUT-Anfrage an die URL, die wir im Location-Header erhalten haben. Wir müssen nur die Daten senden, die wir ändern möchten, daher setzen wir die Statuseigenschaft auf 'Veröffentlichen'. Wir müssen auch die Authentifizierung zusammen mit der Anfrage senden.

PUT /wp-json/wp/v2/posts/42 Host: example.com Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= {'status':'publish'}

Wir sollten eine 200-OK-Antwort vom Server zurückerhalten, die angibt, dass der Beitrag erfolgreich aktualisiert wurde. Wir werden auch den aktualisierten Beitrag im Text zurückbekommen, und wir sollten dort 'Status': 'Veröffentlichen' sehen. Überprüfen Sie Ihre Website, und Sie sollten sehen, dass der Beitrag jetzt live ist. Huzzah!

Zum Abschluss löschen wir den Beitrag, um unsere Tests zu bereinigen. Wir müssen eine DELETE-Anfrage an dieselbe URL senden. Wir werden fast den gleichen Prozess wie zuvor ausführen - wir müssen noch eine Authentifizierung senden, aber dieses Mal müssen wir keine zusätzlichen Daten mitsenden.

Wir sollten eine Anfrage haben, die so aussieht:

DELETE /wp-json/wp/v2/posts/42 Host: example.com Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Wir sollten sehen, dass der Beitrag jetzt von unserer Website verschwindet. Tolle Arbeit - wir haben gerade den gesamten Veröffentlichungsprozess mit WordPress und alles über die REST-API durchlaufen.

Plugins erstellen

Die API ist so konzipiert, dass sie auch mit WordPress-basiertem Code problemlos verwendet werden kann. Wenn auf einer Site Plugins oder Designs ausgeführt werden, können Sie die REST-API mit minimalem Aufwand verwenden. Tatsächlich wird die Authentifizierung automatisch über das in WordPress integrierte Cookie-Authentifizierungssystem für Sie abgewickelt. Sie müssen lediglich ein zusätzliches Cross-Site Request Forgery-Token zusammen mit Ihren Anforderungen übergeben.

Das REST-API-Plugin enthält auch eine JavaScript-basierte API, die Sie verwenden können. Dies umfasst Methoden für den Zugriff auf Daten von der Site sowie für das Erstellen, Aktualisieren und Löschen dieser Daten. All dies wird durch Backbone-basierte Datenmodelle und Sammlungen erreicht.

Um die API verwenden zu können, müssen Sie das Skript in Ihr Design oder Plugin einreihen. Rufen Sie einfach wp_enqueue_script ('wp-api') auf. Lassen Sie uns unser Beispiel von zuvor durchgehen und zuerst auf den Beitrag zugreifen:

var posts = new wp.collections.Posts(); var post = posts.get( 42 );

Um einen neuen Beitrag zu erstellen, verwenden wir ähnlichen Code wie zuvor, jedoch in JavaScript:

var post = new wp.models.Post(); post.set( 'title', 'Hello!' ); post.set( 'content', 'Hi, this is my new post!' ); post.save();

Wir haben gerade den Erstellungsprozess von zuvor repliziert, ohne uns um die Komplikationen der Authentifizierung oder der HTTP-Anforderungen kümmern zu müssen. Wir können dann auch dies veröffentlichen:

post.set( 'status', 'publish' ); post.save();

Nächste Schritte

REST-API

Eine vollständige Dokumentation finden Sie unter v2.wp-api.org, einschließlich Anleitungen zu Authentifizierungsprozessen

Sie haben gerade gelernt, wie Sie mit der API sowohl über normale HTTP-API-Anforderungen als auch über die JavaScript-API interagieren. Wir haben jedoch kaum die Oberfläche der über die API verfügbaren Inhalte zerkratzt. Glücklicherweise enthält es eine integrierte Dokumentation zu möglichen Routen und Methoden sowie die verfügbaren Daten. Nehmen Sie sich Zeit, um die API anhand des Index im API-Stammverzeichnis zu durchsuchen und herauszufinden, was sich dort befindet.

Die REST-API wird bereits in Version 4.4 in WordPress integriert. Die letzten Phasen der Zusammenführung finden Anfang 2016 statt. Kommentare zur Projektvision, Fehlerberichte und Funktionsanfragen sind willkommen, da wir vor der Integration Feedback einholen. Gehen Sie einfach zu GitHub und hinterlassen Sie Feedback zu einem neuen GitHub-Problem.

Die API kann die Arbeitsweise mit WordPress ändern und verbessern. Wir freuen uns darauf zu sehen, was Sie jetzt und in Zukunft damit bauen. Viel Spaß beim Hacken!

Wörter :: Ryan McCue

Ryan McCue ist leitender Ingenieur bei Human Made. Dieser Artikel wurde ursprünglich in Ausgabe 275 von veröffentlicht Netzmagazin .

Mochte dies? Lese das!