Wenn du nur eine Ladeanimation siehst, aber der eigentliche Inhalt in einem unserer Plugins nicht geladen wird, ist deine WordPress REST API höchstwahrscheinlich nicht erreichbar.
Was ist die WordPress REST API?
Eine REST API ist generell eine standardisierte Methode, die viele Anwendungen im Internet nutzen, um zwischen Server und Client zu kommunizieren. WordPress v4.7 hat die WordPress REST API eingeführt, die es modernen WordPress Plugins erlaubt, diese Standardmethode zur Kommunikation zu nutzen, anstatt den WordPress eigenen Weg der Kommunikation.
Wie kann ich die WordPress REST API in meiner Website aktivieren?
Die WordPress REST API ist standardmäßig in deiner WordPress Website aktiviert. Es ist eine Standard-Kommunikationsmethode und es besteht kein zusätzliches Risiko, sie zu aktivieren, verglichen mit anderen Methoden, wie WordPress-Plugins zwischen Client und Server kommunizieren. Aber einige WordPress Plugins erlauben es dir als WordPress Admin die REST API zu deaktivieren. Der Grund für die Deaktivierung ist meist der Wunsch nach besserer Performance oder Sicherheitsbedenken. Für beide Aspekte ist die Deaktivierung der REST API jedoch meist kein geeignetes Mittel.
Wir kennen die folgenden Plugins, mit denen du die REST API deaktivieren kannst. Standardmäßig deaktiviert keines dieser Plugins die REST API, aber du kannst sie optional deaktivieren:
- Wordfence
- iThemes Security (formerly Better WP Security)
- All In One WP Security & Firewall
- Sucuri Security
- Titan Anti-spam & Security
- Cerber Security, Anti-spam & Malware Scan
- Shield Security
- WP Hide & Security Enhancer
- BulletProof Security
- Disable REST API
- NinjaFirewall (WP Edition)
- Hide My WP Ghost
- Perfmatters
- Swift Performance
- Clearfy
- WP Oath Server
- Password Protected
- Cloudflare WAF (Web Application Firewall)
- WP REST API Controller
Zusätzlich kannst du den Zugriff auf die REST API in deiner Webserver-Konfiguration (normalerweise Apache2 oder NGINX) einschränken. Dies kann absichtlich oder versehentlich geschehen, indem du Anfragen ablehnst, die mit /wp-json/
beginnen.
Woher weiß ich, ob die nicht erreichbare REST API mein Problem ist?
Du kannst ganz einfach überprüfen, ob eine nicht erreichbare REST API das Problem ist, wenn du nur eine Ladeanimation in einem devowl.io WordPress Plugin siehst. Folge einfach diesen Schritten:
- Öffne einen neuen Tab, in dem du auf deine Website zugreifst.
- Right-click into the web page to open the panel “Inspect” (Google Chrome) or “Inspect Element” (Mozilla Firefox). Here you can go to the “Console” tab.
- Öffne nun die Seite, auf der du die Ladeanimation siehst, die nicht verschwindet.
- In der Konsole solltest du einen rot markierten Eintrag als Fehler sehen, der auf einen Fehler 401, 403, 404 oder 500 hinweist (je nach Plugin/Konfiguration zur Deaktivierung der REST API).
Wenn du einen Fehler wie diesen siehst, musst du sicherstellen, dass die WordPress REST API wieder erreichbar ist.
Ich möchte die REST API nicht generell aktivieren, sondern für dein Plugin. Ist das möglich?
Dies hängt von der Konfiguration des Plugins ab, das du verwendest, um den Zugriff auf die REST API zu beschränken. Zum Beispiel mit Cerber Security, Anti-spam & Malware Scan kannst du die REST API über Namespaces deaktivieren. Jedes Plugin, das die WordPress REST API nutzt, muss einen Namespace registrieren, in dem alle Endpunkte registriert werden. Wenn du zum Beispiel auf /wp-json/realmedialibrary/v1
in deiner WordPress REST API zugreifst, heißt der Namespace realmedialibrary/v1
.
Wir verwenden für die devowl.io WordPress Plugins die folgenden Namespaces:
- Real Media Library:
realmedialibrary/v1
- Real Physical Media:
real-physical-media/v1
- Real Category Management:
real-category-library/v1
- Real Thumbnail Generator:
real-thumbnail-generator/v1
- Real Custom Post Order:
real-custom-post-order/v1
- Real Cookie Banner:
real-cookie-banner/v1
(muss für jeden verfügbar sein, nicht nur für eingeloggte Benutzer)
Neben WordPress Plugins verwenden wir auch noch Third-Party Pakete, welche von unseren Plugins konsumiert werden. Hierfür musst du noch folgende Namensbereiche freigeben:
- Real Product Manager (Lizenz- und Update-Client, alle Plugins):
real-product-manager-wp-client/v1
- Real Queue (Warteschlangen-Management, aktuell nur in Real Cookie Banner):
real-queue/v1
I am using a plugin like “JWT Auth”. Is it compatible?
Wenn du ein Plugin wie JWT Auth verwenden möchtest, musst du unsere Plugins ebenfalls auf die Whitelist setzen. Im Falle von JWT Auth musst du den Abschnitt "Whitelisting Endpoints" in dessen README Datei lesen und unsere Plugins zu den erlaubten Endpoints hinzufügen. Die Endpunkte findest du im obigen Absatz.
Permalinks sind fehlerhaft.
Wenn du Apache2 als Webserver verwendest, definiert die .htaccess
Datei wie die URLs deiner Webseite aussehen. Diese Datei wird automatisch erstellt und manchmal von Plugins manipuliert. Wenn bei der Erstellung etwas schief gelaufen ist, kann das auch ein Grund sein, warum die WP REST API nicht mehr erreichbar ist.
Du kannst also die Regeln in der .htaccess
Datei neu erstellen lassen:
- Gehe zu Einstellungen > Permalinks in deinem WordPress Backend.
- Speichere die unveränderten Einstellungen. Das Speichern löst aus, dass die Regeln neu geschrieben werden.
Ich kann Daten lesen, aber nicht schreiben?
Du verwendest Real Cookie Banner und kannst deine Lizenz nicht speichern oder Ordner mit Real Media Library erstellen? Ein typischer Text für eine solche Fehlermeldung ist:
Fehlende(r) Parameter: terms (oder ähnliche Feldnamen)
Die am meisten identifizierte Ursache an diesem Verhalten bei bisherigen Kunden war, dass dein Server so konfiguriert ist, URLs ohne endenden Slash /
an URLs mit endendem Slash /
weiterzuleiten (oder umgekehrt).
Du kannst dies nachvollziehen, indem du via F12 > Netzwerk die jeweiligen Anfragen prüfst, ob eine POST
Anfrage weitergeleitet wird. Eine POST
Anfrage darf nicht weitergeleitet werden und führt deshalb zu Fehlern, da zu speichernde Daten (quasi deine Eingaben) nicht weitergeleitet werden.
Am besten prüfst du deine .htaccess
Datei, ob du /wp-json
von den URL-Weiterleitungen ausschließen kannst.
Siehe auch: https://docs.wp-rocket.me/article/131-redirection-to-enforce-trailing-slash-on-urls