Das Content Ma­nage­ment System (CMS) WordPress erfreut sich großer Be­liebt­heit. Es ist – im Vergleich zu anderen CMS – relativ einfach, damit Webseiten für un­ter­schied­li­che Ansprüche zu erstellen. Auch die Pflege von Web­prä­sen­zen durch Re­dak­teu­re ist mit soliden Office-Kennt­nis­sen kein Problem. Darüber hinaus können Web-Ad­mi­nis­tra­to­ren auf mehr als 55.000 Plug-ins zu­rück­grei­fen, die viele Aufgaben auf einer Website lösen und zum großen Teil in ihrer je­wei­li­gen Ba­sis­ver­si­on kostenlos sind (siehe hierzu auch unseren Artikel die besten Wordpress-Plugins).

Tipp

Alle Vorteile für Ihre WordPress-Website haben wir in den Ta­rif­mo­del­len „Essential“, „Business“ und „Unlimited“ gebündelt. Pro­fi­tie­ren Sie vom einfachen Einstieg, der ein­ge­bau­ten Si­cher­heit und unserer op­ti­mier­ten Plattform für Ihr Hosting für WordPress.

Was ist die WordPress REST-API?

Hinter dem Begriff WordPress REST-API verbirgt sich eine Schnitt­stel­le, die es er­mög­licht, mit der von WordPress genutzten Datenbank zu kom­mu­ni­zie­ren. Dabei steht die Abkürzung API für „Ap­pli­ca­ti­on Pro­gramming Interface“, auf Deutsch „Pro­gram­mier­schnitt­stel­le“. Sie erlaubt den Austausch zwischen ver­schie­de­nen Pro­gram­men nach einem fest­ge­leg­ten Muster – ver­gleich­bar mit der Un­ter­hal­tung zweier Menschen, die un­ter­ein­an­der nur verstehen, wenn sie sich einer gemeinsam ver­ständ­li­chen Sprache bedienen. Wei­ter­füh­ren­de In­for­ma­ti­on finden Sie in unserem Beitrag „APIs: Was man über Pro­gram­mier­schnitt­stel­len wissen muss“.

Die Abkürzung REST bedeutet „Re­pre­sen­ta­tio­nal State Transfer“. Das sind die Prin­zi­pi­en für den In­for­ma­ti­ons­aus­tausch, entworfen im Jahre 1994 vom US-In­for­ma­ti­ker Roy Fielding:

  • Ein­heit­lich­keit: Die URLs für den Zugriff auf Res­sour­cen müssen ein­heit­lich, kon­sis­tent und über einen ge­mein­sa­men Ansatz wie GET zu­gäng­lich sein.
  • Client-Server-Trennung: Ändert sich die ser­ver­sei­ti­ge Tech­no­lo­gie (z. B. WordPress), muss eine cli­ent­sei­ti­ge Anwendung (z. B. eine App) weiterhin darauf zugreifen können.
  • Stateless: Der Server ändert seinen Zustand bei einer neuen Anfrage über die API nicht und speichert die Anfrage nicht.
  • Cache­fä­hig­keit: Sorgt server- oder cli­ent­sei­tig für eine hohe Ge­schwin­dig­keit und Kon­for­mi­tät.
  • Layered System: Der Zugriff ist über mehrere Schichten (Layer) möglich.
  • Code on Demand (optional): Code zur lokalen Aus­füh­rung wird erst bei Bedarf an den Client über­tra­gen.

In WordPress sind diese An­for­de­run­gen seit der Version 4.7. im so­ge­nann­ten Core, also der Kern­pro­gram­mie­rung des Content Ma­nage­ment System enthalten. Davor gab es bis zum 13. Mai 2018 das Plug-in „WP REST API (WP API)“. Ab der WordPress-Version 5.x wurden Elemente in den Core des Systems auf­ge­nom­men, die die be­stehen­den Kom­mu­ni­ka­ti­ons­mög­lich­kei­ten mit anderen (Web-)An­wen­dun­gen und Apps erweitern.

Managed Hosting für WordPress
Erstellen Sie Ihre Website mit AI, wir über­neh­men den Rest
  • Keine Vor­kennt­nis­se nötig dank be­nut­zer­freund­li­cher AI-Tools
  • Voll­stän­dig anpassbar mit Themes und Plugins
  • Einfache Updates und minimaler Admin-Aufwand

Was macht man mit der WordPress REST-API?

Die Schnitt­stel­le er­mög­licht die direkte Kom­mu­ni­ka­ti­on mit der von WordPress ver­wen­de­ten Datenbank, in der alle In­for­ma­tio­nen einer Website ge­spei­chert sind. Diese Datenbank wird mit dem Datenbank-Ma­nage­ment-System MySQL verwendet – eine Open-Source-Software. Um zu kom­mu­ni­zie­ren, gibt es Befehle, mit denen der Zugriff durch die „ein­ge­bau­te“ WordPress-API er­mög­licht wird. Dabei sind mehrere Wege möglich.

Terminal-Zugriff auf die Datenbank

Die WordPress REST-API erlaubt den Zugriff auf die Inhalte einer WordPress-Website über die Ein­ga­be­auf­for­de­rung in Windows:

  • Rechts­klick auf das Windows-Symbol > „Ausführen“ > „cmd“ ins Fenster eingeben > „OK“
  • Suche in der Task­leis­te ak­ti­vie­ren > „cmd“ eingeben > die App „Ein­ga­be­auf­for­de­rung“ anklicken

oder das Terminal in macOS:

  • Tas­ten­kom­bi­na­ti­on „cmd“ + [Leertaste] + „Terminal“ eingeben, Dop­pel­klick auf das Such­ergeb­nis
  • In der oberen Me­nü­leis­te auf dem Schreib­tisch wählen Sie „Gehe zu“ > „Dienst­pro­gram­me“; im neu ge­öff­ne­ten Fenster Dop­pel­klick auf „Terminal“
  • Im „Dock“ auf „Programme“ > „Dienst­pro­gram­me“ > „Terminal“

Die ei­gent­li­chen Befehle fügen Sie am blin­ken­den Prompt auf dem Bild­schirm ein, bei­spiels­wei­se hinter

C:\Users\IhrUserName>_

Geben Sie folgende cURL-Anweisung ein:

curl -X OPTIONS -i https://ihredomain.de/wp-json/

Starten Sie mit „Enter“, und wenige Au­gen­bli­cke später haben Sie die Ausgabe auf dem Bild­schirm. Es handelt sich um die Ba­sis­da­ten der Website mit den erlaubten Optionen („OPTIONS“). Zu erkennen ist u. a., dass der Befehl GET gestattet ist: „Allow: GET“.

Mit dem Kommando

curl -X GET http://ihredomain.de/wp-json/

erhalten Sie alle Angaben aus der Datenbank, in­halts­gleich mit dem Vorgehen im nach­fol­gen­den Abschnitt.

Die WordPress REST-API mit Brow­ser­zu­griff nutzen

Die Inhalte der WordPress-Datenbank sind auch über einen HTTP-Brow­ser­auf­ruf auslesbar. Dabei wird ebenfalls JSON genutzt:

https://ihredomain.de/wp-json/
Fakt

JSON ist die Abkürzung für „Ja­va­Script Object Notation“. Dabei handelt es sich um ein text­ba­sier­tes Format zum Austausch von Daten. Es ist leicht zu erlernen und zu lesen und flexibel ein­setz­bar wie unter anderem unser Tutorial zur JSON-LD-Aus­zeich­nung und unserer Artikel zur do­main­über­grei­fen­den Da­ten­ab­fra­ge mit JSONP zeigen.

Die ab­ge­ru­fe­nen In­for­ma­tio­nen liegen wie ein offenes Buch vor Ihnen. Um tiefer in die Inhalte der Website zu schauen, er­mög­licht die WordPress REST-API mit einem großen Be­fehls­um­fang das de­tail­lier­te Abrufen von de­fi­nier­ten Be­stand­tei­len aus der Datenbank, so bei­spiels­wei­se das Abrufen der Posts (Beiträge) mit:

https://ihredomain.de/wp-json/wp/v2/posts

Damit bekommen Sie einen Überblick über alle Posts (Beiträge) in der Datenbank ein­schließ­lich der eventuell vor­lie­gen­den Versionen, Links, Me­di­en­in­hal­ten, Verfasser u. v. m. Ein einzelner Post ist in der WordPress-Datenbank eindeutig mit seiner ID ge­kenn­zeich­net:

Um nun einen einzelnen Post im Browser aus­zu­le­sen, ergänzt man seine ID in der Eingabe:

https://ihredomain.de/wp-json/wp/v2/posts/6576

Dieses Prozedere lässt sich mit allen Inhalten ausführen: Neben Posts auch Seiten (pages), Me­di­en­in­hal­te (media), Autoren (author) u. v. m. Das Handbuch für die WordPress REST-API mit der kom­plet­ten Be­fehls­re­fe­renz ist als REST API Handbook auf den Ent­wick­ler­sei­ten von WordPress.org zu finden.

WordPress REST-API ganz praktisch

Wozu wird eine solche WordPress-API benötigt? Ein einfaches prak­ti­sches Beispiel soll das ver­an­schau­li­chen: Eine neue Website soll News von anderen In­ter­net­an­bie­tern sammeln. Das funk­tio­niert mit der WordPress REST-API nur, wenn die be­reit­stel­len­den Websites auch in WordPress pro­gram­miert sind. Dazu werden die Inhalte mit ihren IDs auf den aus­ge­wähl­ten Servern abgefragt.

Um immer die ak­tu­ells­ten Inhalte abzurufen, gibt es diverse Pro­gram­mier­mög­lich­kei­ten, u. a. mit den Skript­spra­chen PHP oder der Ja­va­Script-Bi­blio­thek jQuery. Das stellen wir Ihnen mit zwei einfachen Code-Bei­spie­len für die WordPress-API vor.

Einen Post mit PHP auslesen

Um einen Post von einer anderen WordPress-Seite aus­zu­le­sen, baut man auf einer HTML-Seite zwischen <body> … </body> einen Code-Abschnitt ein. Diese Seite sollte in der Lage sein, PHP zu ver­ar­bei­ten, in diesem Beispiel mit dem Da­tei­na­men „test-wp-rest-api.php“. Die Namen der aus­zu­ge­ben­den Felder entnimmt man der oben dar­ge­stell­ten JSON-Abfrage (guid, title, link, content …). Der Code-Abschnitt besteht aus einem PHP-Skript, das die In­for­ma­tio­nen holt, und einem HTML-Teil, der die aus­ge­le­se­nen Daten wieder per PHP ausgibt:

<?php
    $url = 'https://www.meineseite.de/wp-json/wp/v2/posts/6576'; // Der Pfad der JSON-Abfrage mit ID
    $data = file_get_contents($url); // Den Inhalt in eine Variable übergeben
    $mydata = json_decode($data, true); // JSON dekodieren
?>
<h1>PHP: Post auslesen per WordPress REST-API</h1> // Überschrift
<div id="mydata">
    <?php echo $mydata['content']['rendered']; ?> // Ausgabe von 'content' mit der ID 6576
</div>

Den Post mit jQuery auslesen

Ein Al­ter­na­ti­ve zum Auslesen der Inhalte ist jQuery. Dazu muss diese Bi­blio­thek in den Seiten-Header ein­ge­bun­den werden. Dann funk­tio­niert das Ganze auch mit der Da­tei­enen­dung .html.

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> // jQuery einbinden
    <script>// der Abschnitt zum Auslesen der Daten des Posts
        $(function() {
            $.getJSON('https://mtmedia.de/wp-json/wp/v2/posts/6576', function(alldata) {
                var contentElm = alldata.content.rendered
                        $(contentElm).appendTo("#mydata");
            });
        });
    </script>
</head>
<body>
    <h1>jQuery: Post auslesen per WordPress REST-API</h1> // Überschrift
    <div id="mydata"> Ausgabe von 'content' des Posts mit der ID 6576
    </div>
</body>

Das Ergebnis ist in der Dar­stel­lung im Browser identisch mit der PHP-pro­gram­mier­ten Ausgabe. Die Inhalte per jQuery werden ohne eine zu­sätz­li­che Variable im DIV-Container „mydata“ aus­ge­ge­ben.

Was passiert bei Websites mit anderen CMS?

Die API heißt WordPress REST-API, da sie in­te­grier­ter Be­stand­teil der WordPress-Pro­gram­mie­rung ist. Damit steht diese Schnitt­stel­le auch nur dann zur Verfügung, wenn die ab­zu­fra­gen­den Seiten mit WordPress angelegt sind.

Der Ab­fra­ge­ver­such ergibt eine 404-Feh­ler­mel­dung. Für solche Websites gibt es andere Lösungen, die Datenbank des CMS an­zu­spre­chen.

Zugriff auf die WordPress REST-API sperren

Nicht jeder möchte, dass man die In­for­ma­tio­nen seiner Website einfach so auslesen kann und u. U. sogar wei­ter­ver­wen­det. Um dies zu ver­hin­dern, gibt es eine Barriere, die man im WordPress-Backend aktiviert.

Das Plug-in „Disable WP REST API“ aus der WordPress-Re­po­si­to­ry muss – wie jedes andere – nach dem In­stal­lie­ren aktiviert werden, um den Zugriff Un­be­rech­tig­ter zu ver­hin­dern. Weitere Ein­stel­lun­gen sind nicht er­for­der­lich.

Der Sta­tus­code „401“ (Un­aut­ho­ri­zed) bedeutet, dass der Server die HTTP-Anfrage wegen fehlender oder nicht gültiger Au­then­ti­fi­zie­rung abgelehnt hat. Im Un­ter­schied zu „403“ ist eine Au­then­ti­fi­zie­rung jedoch möglich.

Viele Websites sind auf diese Art geschützt, um au­to­ma­ti­sier­ten Content-Diebstahl zu ver­hin­dern. Es gehört nicht nur zum guten Ton, sondern auch zum Respekt vor dem Ur­he­ber­recht, sich die Ver­wen­dung fremder Inhalte vom je­wei­li­gen Website-Betreiber ge­neh­mi­gen zu lassen. Zum Testen mit der eigenen Website genügt es, das Plug-in auf „De­ak­ti­viert“ zu stellen. Dann sind die Inhalte der Datenbank wieder wie be­schrie­ben abrufbar. Daten im Plug-in können nicht verloren gehen.

Zum Hauptmenü