WordPress REST API: Alles, was Sie wissen müssen
WordPress 4.4 machte die WordPress REST API zu einem Teil des Kerns.
In diesem Artikel erkläre ich, warum diese Entwicklung riesig für WordPress (und Theme- und Plugin-Autoren im Allgemeinen) ist und zeige Ihnen, wie Sie sie verwenden können, um die Kommunikation zwischen WordPress und anderen Apps zu vereinfachen.
Die WordPress REST API ermöglicht es WordPress-Websites auch, die standardmäßige WordPress-Admin-Oberfläche abzuschaffen, um eine vollständig personalisierte Admin- oder Content-Erfahrung mit einem vielfältigen Technologie-Stack anzubieten.
Calypso – die Desktop-App von WordPress – ist ein schönes Beispiel dafür. Calypso ist eine einzige Javascript-Anwendung, die die WordPress REST API verwendet, um zwischen WordPress.com und dem Kern zu kommunizieren.
Da die WordPress REST API nun ein integraler Bestandteil des WordPress-Kerns ist, ist es wichtig, dass Entwickler gut verstehen, wie sie funktioniert und welche neuen Möglichkeiten sie für die Interaktion mit WordPress eröffnet.
Und so führe ich Sie in dieser Übersicht und diesem Tutorial zur WordPress REST API durch die Grundlagen der WP REST API und zeige Ihnen, wie Sie damit ein (Plugin-)Widget erstellen können, das die neuesten Beiträge aus den Heroic Knowledge Base Custom Post Types anzeigt.
In diesem Artikel

Wir testen und recherchieren rigoros jedes Produkt, das wir über HeroThemes empfehlen. Unser Bewertungsprozess. Wir können auch eine Provision verdienen, wenn Sie über unsere Links einen Kauf tätigen.
Eine Einführung in die WordPress REST API
Bevor wir uns ansehen, wie wir die WordPress REST API verwenden, um ein (Plugin-)Widget zu erstellen, lassen Sie uns zuerst den Begriff etwas besser verstehen.
Was bedeutet also API?
API steht für Application Program Interface (Programmierschnittstelle für Anwendungen).
In einfachsten Begriffen ist es ein Kommunikationsmittel zwischen zwei verschiedenen Anwendungen.
Ein gängiges Beispiel für eine API in Aktion ist die Tweet-Deck-Anzeige, die viele Websites zeigen. Die Anzeige dieses Tweet-Decks wird über eine API ermöglicht, bei der die Website einfach Daten von Twitter abruft und anzeigt.
Was ist mit REST?
REST steht für REpresentational State Transfer.
REST ist ein HTML-basierter Architekturstil für den Aufbau von APIs. Eine RESTful-Architektur verwendet HTTP-Anfragen, um Daten zwischen zwei Quellen zu posten, zu lesen, zu aktualisieren und zu löschen.
Wenn wir also von einer REST-API sprechen, meinen wir im Wesentlichen eine API, die HTML-Methoden zur Kommunikation verwendet.
Und was ist mit JSON?
Die WordPress REST API ist im gleichen Format wie die WordPress JSON REST API.
JSON (oder Javascript Object Notation) ist ein minimales, textbasiertes Datenaustauschformat, das verwendet wird, um nahtlos Daten zwischen verschiedenen Plattformen auszutauschen (auch wenn die Plattformen unterschiedliche Sprachen verwenden).
JSON ist eine leichte Alternative zu XML-basierten Lösungen und somit perfekt für mobile Apps mit Bandbreitenbeschränkungen.
Warum die WordPress REST API verwenden
Sie fragen sich vielleicht, was an der WordPress REST API so außergewöhnlich ist und warum Sie sich dafür interessieren sollten.
Nun, die WordPress REST API ermöglicht es Ihnen, mehr mit WordPress zu tun.
Zum Beispiel:
- Schreiben Sie Anwendungen in jeder Sprache, die Sie kennen, und lassen Sie sie mit einer WordPress-Site interagieren (die einzigen 2 Voraussetzungen sind, dass die Sprache Ihrer App HTML-Methoden verwenden und JSON interpretieren können muss).
- Entwerfen Sie vollständig personalisierte Admin- und Content-Erlebnisse
- Entwickeln Sie Single-Page-Anwendungen auf Basis von WordPress
Und vieles mehr.
Es ist fast unmöglich, alle potenziellen Anwendungen/Schnittstellen/Erlebnisse aufzulisten, die mit der REST API erstellt werden können. Das Handbuch zur WordPress REST API sagt zu Recht:
Unsere Vorstellungskraft ist die einzige Grenze für das, was mit der WordPress REST API gemacht werden kann. Letztendlich, wenn Sie eine strukturierte, erweiterbare und einfache Möglichkeit suchen, Daten über HTTP in und aus WordPress zu erhalten, möchten Sie wahrscheinlich die REST API verwenden.
Aber ich weiß, dass die Implementierung immer viel schwieriger ist als das Verständnis der Theorie.
Sehen wir uns also ein kurzes Tutorial an, wie Sie die WordPress REST API verwenden können, um ein benutzerdefiniertes (Plugin-)Widget zu erstellen.
Ein kurzes Tutorial zur Verwendung der WordPress REST API
Wenn Sie eines unserer Wissensdatenbankprodukte haben, wie z. B. unser KnowAll Help Center Theme oder Ihr eigenes Theme mit dem Heroic Knowledge Base Plugin, haben Sie eine Website mit einer Wissensdatenbank von Supportartikeln. Die Verwendung dieser Produkte ist nicht notwendig, um die Prinzipien dieses Tutorials zu befolgen. Seien Sie sich jedoch bewusst, dass Sie jeden Code an Ihre eigene Einrichtung anpassen müssen.
Sind Sie also bereit mit Ihrer lokalen Einrichtung?
Großartig!
Nun werden wir eine weitere Website auf einem anderen Server erstellen.
Warum erstellen wir also diese zweite Website?
Wir tun dies, weil wir die WordPress REST API implementieren möchten, um mit dieser zweiten Website zu kommunizieren, und wie Sie jetzt wissen, geht es bei der WordPress REST API darum, Gespräche zu ermöglichen.
Wir werden also die WordPress REST API verwenden, damit die beiden Websites miteinander sprechen und Daten austauschen können.
Und das Endziel des Tutorials ist:
Wählen Sie die neuesten veröffentlichten Wissensdatenbankartikel von der Hilfe-Center-Website aus und zeigen Sie sie in einem Widget in der Seitenleiste der neuen Website an.
Für diesen Artikel wird die Hilfe-Center-Website, die alle Wissensdatenbankartikel enthält, als 'lokale' Website bezeichnet und die neue Website, auf der Sie das Widget anzeigen werden, als 'externe' Website.
An dieser Stelle gehe ich davon aus, dass Sie 1) Ihre 'lokale' Help Center-Website und 2) eine neue 'externe' Website auf einem anderen Server eingerichtet haben.
Und am Ende des Tutorials hätten wir erfolgreich eine Liste von Wissensdatenbankartikeln von der 'lokalen' Website auf der neuen 'externen' Website (über die WordPress REST API) mit einem benutzerdefinierten (Plugin-)Widget angezeigt.
Damit sind wir bereit zu beginnen:
Schritt #1: Kopieren Sie zunächst den folgenden Boilerplate-Code in eine neue .php-Datei und speichern Sie sie im Plugins-Ordner Ihrer „externen“ Website.
Sehen Sie den vollständigen Code für dieses WordPress REST API Tutorial hier.
Dieser Code erstellt ein sehr einfaches Widget, das einen Titel Ihrer Wahl anzeigt.
Indem wir den Code oben in der Vorlage hinzufügen und im Plugins-Verzeichnis speichern, haben wir ihn als Plugin erstellt (anstatt den Code in die functions.php-Datei des Themes einzufügen).
Es ist eine Kleinigkeit, aber das Erstellen eines Widgets als Plugin in diesem Stil ermöglicht es Ihnen, es ein- und auszuschalten und es später bei Bedarf auch in anderen Themes wiederzuverwenden, ohne kopieren und einfügen zu müssen.
Nach der Installation und Aktivierung haben Sie ein neues Widget im Bereich Widgets des Dashboards:

Schritt #2: Verwenden Sie die WordPress REST API, um die neuesten Wissensdatenbankartikel abzurufen
Da Sie in dieser Entwicklung nichts bearbeiten oder löschen möchten, konzentrieren wir uns nur auf die widget()-Funktion. Hier werden die Inhalte aus dem Widget auf der 'externen' Website ausgegeben.
Um die Liste der neuesten Wissensdatenbankartikel von der 'lokalen' Website zu 'erhalten', müssen wir ein paar Dinge wissen:
- Der Basispfad der API (welche API auf Ihrer Website verwendet werden soll, in unserem Fall die neueste WP API)
- Die verwendete Route (WP API hat mehrere Routen für die verschiedenen verfügbaren Datensätze und Operationen)
- Der verwendete Endpunkt (Welche Aktion ausgeführt werden soll)
- Parameter (Die Daten, die mit der Anfrage verbunden sind)
Der Basispfad der API ist immer:
json/wp/v2/
Und so wird der absolute API-Pfad zu:
http://example.com/json/wp/v2/
(https://example.com ist Ihre 'lokale' Website)
Die verwendete Route ist:
json/wp/v2/posts/
Über die Endpunkte: Diese Route hat tatsächlich drei Endpunkte, die durch die HTTP-Methoden unterschieden werden. Diese Endpunkte sind:
- GET
- PUT
- DELETE
In diesem Beispiel wählen Sie den GET-Endpunkt, damit Sie eine Liste der neuesten Beiträge von der 'lokalen' Website abrufen (oder 'erhalten') können.
Ihre erste Codezeile, die mit der REST-API interagiert, lautet also:
$response = wp_remote_get( 'https://products-website.com/wp-json/wp/v2/posts/' );
Überprüfen Sie als Nächstes, ob Fehler zurückgegeben werden:
if( is_wp_error( $response ) ) {
return;
}
Dieser Code prüft lediglich, welche Antwort zurückgegeben wird. Wenn die Antwort einige Beiträge zurückgibt, gibt es keinen Fehler.
Der letzte Teil dieses Abschnitts ist:
$posts = json_decode( wp_remote_retrieve_body( $response ) );
if( empty( $posts ) ) {
return;
}
$response ist ein JSON-kodierter String mit Beitragsdaten. Sie dekodieren ihn also nur, damit er ausgegeben werden kann.
Fügen Sie erneut eine zusätzliche Prüfung hinzu, um sicherzustellen, dass $posts nicht leer ist. Wenn dies der Fall ist, wird nichts zurückgegeben.
Zu diesem Zeitpunkt haben Sie erfolgreich über die API mit Ihrer 'lokalen' Website kommuniziert. Diese Implementierung liefert Ihnen eine Liste von Beiträgen, die Sie anzeigen können.
Die nächste Stufe ist die tatsächliche Anzeige im Widget auf der 'externen' Website.
Schritt #3: Zeigen Sie die neuesten Beiträge auf der 'externen' Website an, indem Sie den folgenden Code hinzufügen:
if( !empty( $posts ) ) {
echo '<ul>';
foreach( $posts as $post ) {
echo '<li><a href="' . $post->link. '">' . $post->title->rendered . '</a></li>';
}
echo '</ul>';
}
Der Code für Ihr fertiges Widget sollte wie folgt aussehen:
Nachdem der obige Schritt abgeschlossen ist, sehen Sie, wenn Sie jetzt versuchen, Ihre 'externe' Website anzuzeigen, eine Liste Ihrer Beiträge von der 'lokalen' Website in Ihrer Seitenleiste.

Das ist alles großartig.
Wenn Sie sich jedoch erinnern, sind dies nicht die richtigen Beiträge, da wir nur die neuesten Artikel aus der Wissensdatenbank anzeigen möchten.
Unsere aktuelle Implementierung tut dies nicht, da das Knowledge Base Plugin seinen eigenen benutzerdefinierten Post-Typ verwendet. Und da benutzerdefinierte Post-Typen standardmäßig nicht für APIs öffentlich verfügbar sind, verursacht dies ein Problem. (Hinweis: Die neueste Version der Wissensdatenbank ist für die REST-API öffentlich verfügbar und der nächste Abschnitt kann übersprungen werden)
Verwendung der REST-API mit benutzerdefinierten Beitragstypen
Um benutzerdefinierte Post-Typen für die REST API verfügbar zu machen, benötigen Sie einen kleinen Workaround.
Wenn Sie also einen benutzerdefinierten Beitragstyp erstellen, müssen Sie den Argumenten für die Registrierung des Beitragstyps einen neuen Parameter hinzufügen, um ihn öffentlich verfügbar zu machen:
'show_in_rest' = true,
'rest_base' = 'ht_kb',
'rest_controller_class' = 'WP_REST_Posts_Controller',
Da wir in unserem Fall ein Plugin zur Stromversorgung des Wissensdatenbankartikel-Post-Typs verwenden, werden wir die Plugin-Datei nicht direkt bearbeiten, um die benutzerdefinierten Post-Typen für die REST-API verfügbar zu machen. (Das direkte Bearbeiten einer Plugin-Datei ist nie eine gute Idee!)
Stattdessen fügen wir den folgenden Code zur functions.php-Datei im Child-Theme für die 'lokale' Website hinzu:
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* Add rest support to an existing post type
*/
add_action( 'init', 'my_custom_post_type_rest_support', 25 );
function my_custom_post_type_rest_support() {
global $wp_post_types;
//set this to the name of your post type!
$post_type_name = 'ht_kb';
if( isset( $wp_post_types[ $post_type_name ] ) ) {
$wp_post_types[$post_type_name]->show_in_rest = true;
$wp_post_types[$post_type_name]->rest_base = $post_type_name;
$wp_post_types[$post_type_name]->rest_controller_class = 'WP_REST_Posts_Controller';
}
}
Jetzt ist der benutzerdefinierte Beitragstyp 'ht_kb' für die WP REST API öffentlich verfügbar.
Nachdem wir den benutzerdefinierten Post-Typ für die WordPress REST API verfügbar gemacht haben, müssen wir nun unser Widget reparieren, um Beiträge mit diesem Post-Typ anzuzeigen. Dazu gehen wir zurück zum $response-Code aus Schritt #2 und aktualisieren ihn auf:
$response = wp_remote_get( 'https://example.com/wp-json/wp/v2/ht_kb/' );
Wir ändern im Grunde /posts/ zu /ht_kb/ in der API-Route, da 'ht_kb' der Name des benutzerdefinierten Post-Typs des Plugins ist.
Sobald Sie Ihr Widget aktualisiert und die 'externe' Website in der Vorschau angezeigt haben, sollten Sie nun die neuesten Artikel aus der Wissensdatenbank sehen.

Abschließende Gedanken
Wie wir gesehen haben, können Sie mit ein paar einfachen PHP- und HTML-Schnipseln neue Funktionen, Widgets und Plugins erstellen.
Sie könnten das gerade erstellte Plugin ändern, um eine Suchleiste zu erstellen, die die WP REST API verwendet, um die Artikel der Wissensdatenbank zu durchsuchen und die Ergebnisse im Widget anzuzeigen.
Oder Sie könnten die Authentifizierung nutzen, um zu steuern, wer die Ergebnisse sieht (nützlich, wenn Sie eingeschränkte Inhalte erstellt haben).
Es gibt so viel, das Sie ausprobieren können! Holen Sie sich einfach die Grundlagen, und Sie sind bereit.
Weiterführende Lektüre
Es gibt viele veraltete Inhalte rund um die WordPress REST API, stellen Sie also sicher, dass Sie nur die aktualisierten Dinge lesen. Ich habe im gesamten Beitrag auf einige nützliche Ressourcen verlinkt, aber ich liste hier auch einige auf.
Lesen Sie sich also ein und finden Sie die verschiedenen kreativen Möglichkeiten heraus, wie Sie die REST API nutzen können.
Wenn Sie Fragen zur Implementierung der WordPress REST API haben, stellen Sie diese unten in den Kommentaren!
Kommentar hinterlassen?
Sie müssen eingeloggt sein, um einen Kommentar zu posten.