Anwendungspasswörter und REST-API: Inhalte in WordPress automatisiert anlegen
So legen Sie für Skripte und Automatisierungsdienste einen eigenen WordPress-Benutzer mit Anwendungspasswort an, erzeugen Beiträge als Entwurf, laden Bilder über die REST-API hoch und überwachen oder widerrufen den Zugang.
Mit KI erstellt – redaktionelle Prüfung ausstehend
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Mehr dazu

Viele kleine Unternehmen pflegen Inhalte an mehreren Stellen: Stellenanzeigen im Personalsystem, Termine im Kalender, Neuigkeiten im Newsletter-Werkzeug. Statt alles von Hand in WordPress zu kopieren, kann ein Skript oder ein Automatisierungsdienst die Beiträge direkt anlegen. WordPress bringt dafür alles mit: die REST-API als Schnittstelle und Anwendungspasswörter als Zugang, der sich getrennt vom normalen Passwort vergeben und widerrufen lässt. Diese Anleitung zeigt, wie Sie einen eigenen Benutzer für die Automatisierung anlegen, Beiträge als Entwurf erzeugen, Bilder hochladen und den Zugang sauber überwachen.
Voraussetzungen
- WordPress: eine aktuelle Version, getestet mit WordPress 7.1.2. Anwendungspasswörter gibt es seit WordPress 5.6.
- PHP: 7.4 oder neuer, empfohlen 8.3 oder 8.4.
- HTTPS: ein gültiges Zertifikat für die Website. Ohne HTTPS bietet WordPress Anwendungspasswörter nicht an.
- Zugriff: Backend-Zugang mit der Rolle Administrator, um Benutzer anzulegen. Für die Beispiele ein Terminal mit
curl, unter Windows 10 und 11 ist es vorinstalliert. - Keine Sperre der REST-API: Sicherheits-Plugins oder eigene Regeln dürfen die Endpunkte für Beiträge und Medien nicht für angemeldete Zugriffe blockieren.
- Backup: eine aktuelle Sicherung der Datenbank. Ein fehlerhaftes Skript kann in kurzer Zeit viele Beiträge anlegen oder ändern.
Schritt 1: Einen eigenen Benutzer für die Automatisierung anlegen
Ein Anwendungspasswort hat dieselben Rechte wie der Benutzer, zu dem es gehört. Hängen Sie es an Ihr Administratorkonto, darf das Skript alles, was Sie dürfen, also auch Plugins installieren und Benutzer löschen. Legen Sie deshalb unter Benutzer > Benutzer hinzufügen einen eigenen Benutzer an, etwa „redaktion-api“, und wählen Sie die kleinste Rolle, die für die Aufgabe reicht.
| Rolle | Beiträge anlegen | Selbst veröffentlichen | Seiten und Kategorien anlegen |
|---|---|---|---|
| Mitarbeiter | ja, als Entwurf oder zur Prüfung | nein | nein |
| Autor | ja, auch mit Bildern | ja | nein |
| Redakteur | ja | ja | ja |
Das haben wir im Test über die REST-API nachgeprüft. Der Mitarbeiter bekam beim Versuch, direkt zu veröffentlichen, die Fehlermeldung rest_cannot_publish. Einen Beitrag mit dem Status pending („Ausstehend“) konnte er anlegen. Der Autor durfte veröffentlichen, aber weder Seiten noch neue Kategorien anlegen. Für einen Newsletter-Import, bei dem ein Mensch jeden Beitrag noch einmal liest, passt die Rolle Mitarbeiter. Bilder kann ein Mitarbeiter allerdings nicht hochladen, im Test endete der Versuch mit rest_cannot_create. Braucht die Automatisierung Bilder, nehmen Sie die Rolle Autor. Welche Rolle welche Rechte hat, beschreibt die Anleitung Benutzerrollen und Rechte vergeben.
Verifizieren: Unter Benutzer > Alle Benutzer steht der neue Benutzer mit der gewählten Rolle.
Schritt 2: Das Anwendungspasswort erzeugen
Melden Sie sich als Administrator an, öffnen Sie unter Benutzer > Alle Benutzer den neuen Benutzer und scrollen Sie zum Abschnitt Anwendungspasswörter. Tragen Sie unter Name des neuen Anwendungspassworts einen sprechenden Namen ein, etwa „Newsletter-Import“, und klicken Sie auf Anwendungspasswort hinzufügen. WordPress zeigt das Passwort genau einmal an, in Gruppen zu je vier Zeichen, und weist darauf hin, dass es später nicht wiederhergestellt werden kann. Speichern Sie es sofort in Ihrem Passwortmanager oder im Geheimnisspeicher des Automatisierungsdienstes.
Fehlt der Abschnitt, läuft die Website vermutlich ohne HTTPS. Im Test lieferte WordPress über HTTP bei jedem Versuch nur rest_not_logged_in, obwohl das Passwort stimmte. Der Grund steht im Quellcode: Anwendungspasswörter sind nur verfügbar, wenn die Verbindung verschlüsselt ist oder die Umgebung als „local“ gekennzeichnet ist. Die zweite Ausnahme ist für Entwicklungsrechner gedacht. Auf einer Live-Website sollten Sie sie nicht setzen, denn das Passwort würde sonst unverschlüsselt übertragen.
Mit WP-CLI geht es auch auf der Kommandozeile. Der Schalter --porcelain gibt nur das Passwort aus:
wp user application-password create redaktion-api "Newsletter-Import" --porcelain
Verifizieren: Die Liste unter Anwendungspasswörter zeigt den neuen Eintrag. Die Spalten Zuletzt verwendet und Letzte IP sind noch leer.
Schritt 3: Die Verbindung testen
Bevor Sie Inhalte anlegen, prüfen Sie, ob die Anmeldung klappt. Der Endpunkt /wp-json/wp/v2/users/me gibt den angemeldeten Benutzer zurück. Anwendungspasswörter werden per HTTP-Basic-Authentifizierung übertragen, bei curl mit dem Schalter -u. Die Leerzeichen im Passwort dürfen Sie mitgeben oder weglassen, wenn Sie das Passwort in Anführungszeichen setzen.
curl -s -u 'redaktion-api:xxxx xxxx xxxx xxxx xxxx xxxx' \
'https://ihre-domain.de/wp-json/wp/v2/users/me?context=edit'
Die Antwort enthält im Test unter anderem den Namen „redaktion-api“ und die Rolle „author“. Mit falschem Passwort antwortete WordPress mit Status 401:
{"code":"rest_not_logged_in","message":"Du bist derzeit nicht angemeldet.","data":{"status":401}}
Tragen Sie Passwörter nicht direkt in Skripte ein, die in einem Git-Repository oder auf einem geteilten Laufwerk liegen. Lesen Sie sie aus einer Umgebungsvariablen oder aus dem Geheimnisspeicher des Dienstes.
Verifizieren: Die Antwort enthält Ihren Benutzernamen. Erscheint rest_not_logged_in, prüfen Sie Benutzername, Passwort und HTTPS. Manche Server geben den Header Authorization nicht an PHP weiter, dann hilft Ihr Hoster.
Schritt 4: Einen Beitrag als Entwurf anlegen
Ein POST auf /wp-json/wp/v2/posts legt einen Beitrag an. Die Daten schicken Sie als JSON. Setzen Sie status ausdrücklich auf draft oder pending, damit nichts ungeprüft online geht. Für Kategorien übergeben Sie die ID, die Sie unter Beiträge > Kategorien beim Überfahren des Namens in der Adresse sehen.
curl -s -u 'redaktion-api:xxxx xxxx xxxx xxxx xxxx xxxx' \
-H 'Content-Type: application/json' \
-X POST 'https://ihre-domain.de/wp-json/wp/v2/posts' \
-d '{"title":"Neue Öffnungszeiten ab Oktober","content":"<!-- wp:paragraph --><p>Ab 1. Oktober sind wir montags bis freitags von 8 bis 17 Uhr erreichbar.</p><!-- /wp:paragraph -->","status":"draft","categories":[2]}'
Die Antwort enthält die ID des neuen Beitrags, den Status draft und die Kategorien. Umlaute kamen im Test korrekt an. Den Inhalt sollten Sie in Blockmarkup verpacken wie im Beispiel. Reines HTML funktioniert auch, landet im Block-Editor aber als klassischer Block.
Verifizieren: Unter Beiträge > Alle Beiträge erscheint der Beitrag mit dem Zusatz „Entwurf“ und dem Automatisierungsbenutzer als Autor.
Schritt 5: Bild hochladen und als Beitragsbild setzen
Bilder schicken Sie als Rohdaten an /wp-json/wp/v2/media. Der Dateiname kommt aus dem Header Content-Disposition. Wählen Sie ihn sprechend, denn er wird Teil der Bildadresse:
curl -s -u 'redaktion-api:xxxx xxxx xxxx xxxx xxxx xxxx' \
-X POST 'https://ihre-domain.de/wp-json/wp/v2/media' \
-H 'Content-Disposition: attachment; filename="oeffnungszeiten-buero.jpg"' \
-H 'Content-Type: image/jpeg' \
--data-binary @oeffnungszeiten-buero.jpg
Die Antwort enthält die ID des Bildes und unter source_url seine Adresse. Den Alternativtext setzen Sie mit einem zweiten Aufruf auf /wp-json/wp/v2/media/ID und dem Feld alt_text. Danach verknüpfen Sie das Bild mit dem Beitrag, indem Sie ihn mit dem Feld featured_media aktualisieren:
curl -s -u 'redaktion-api:xxxx xxxx xxxx xxxx xxxx xxxx' \
-H 'Content-Type: application/json' \
-X POST 'https://ihre-domain.de/wp-json/wp/v2/posts/4' \
-d '{"featured_media":6,"excerpt":"Neue Zeiten ab 1. Oktober"}'
Warum der Alternativtext wichtig ist und worauf Sie beim Dateinamen achten, steht in der Anleitung Bilder-SEO: Alt-Texte, Dateinamen und Bildgrößen.
Verifizieren: Öffnen Sie den Entwurf im Block-Editor. In der rechten Seitenleiste ist das Beitragsbild gesetzt, in der Mediathek steht das Bild mit Alternativtext.
Schritt 6: Zugänge überwachen und widerrufen
Ein Anwendungspasswort ist ein dauerhafter Zugang ohne zweiten Faktor. Behandeln Sie es wie einen Schlüssel. Auf der Profilseite des Benutzers zeigt WordPress zu jedem Anwendungspasswort das Erstelldatum, Zuletzt verwendet und Letzte IP. Stammt die letzte IP-Adresse nicht von Ihrem Dienst, widerrufen Sie das Passwort sofort mit Widerrufen. Mit Alle Anwendungspasswörter widerrufen sperren Sie alle Zugänge des Benutzers auf einmal.
Mit WP-CLI sehen Sie dieselben Angaben und können gezielt löschen:
wp user application-password list redaktion-api --fields=uuid,name,last_used,last_ip
wp user application-password delete redaktion-api UUID
Im Test lieferte der widerrufene Zugang danach sofort wieder rest_not_logged_in. Ein Zugang pro Dienst erleichtert das: Sie können einen Dienst abklemmen, ohne die anderen neu einzurichten. Wie Sie Anwendungspasswörter auf bestimmte Rollen beschränken, zeigt die Anleitung Passwort-Richtlinien und Anwendungspasswörter verwalten. Welche Endpunkte Sie für nicht angemeldete Besucher einschränken können, steht in REST-API absichern.
Automatisierungen brechen gern nach Updates, wenn sich ein Plugin oder die Serverkonfiguration ändert. Planen Sie deshalb eine regelmäßige Kontrolle ein. Wer Updates und Sicherungen nicht selbst im Kalender halten möchte, kann sie abgeben: Die WordPress-Wartung von wordpressupdate.de spielt Updates von WordPress, Plugins und Themes mit Kompatibilitätsprüfung ein, sichert wöchentlich auf externen Speicher und richtet eine Firewall ein.
Verifizieren: Nach der ersten Nutzung stehen in der Liste Datum und IP-Adresse. Nach dem Widerrufen liefert der Test aus Schritt 3 den Status 401.
Typische Fehler
rest_not_logged_introtz richtigem Passwort: Die Website läuft ohne HTTPS, oder der Server leitet den HeaderAuthorizationnicht an PHP weiter. HTTPS prüfen, dann beim Hoster nachfragen.rest_cannot_createmit Status 403: Die Rolle reicht nicht, etwa beim Anlegen von Seiten mit der Rolle Autor. Rolle anpassen oder anderen Endpunkt wählen.rest_cannot_publish: Ein Mitarbeiter versucht zu veröffentlichen. Statuspendingverwenden oder bewusst die Rolle Autor vergeben.- Beitrag landet sofort online: Im JSON fehlt
statusoder steht aufpublish. Immer ausdrücklichdraftsetzen. - Anfragen werden blockiert: Ein Sicherheits-Plugin sperrt die REST-API oder die Firewall filtert die IP-Adresse des Dienstes. Freigabe für den Dienst einrichten.
Häufige Fragen
Kann ich das normale Passwort statt eines Anwendungspassworts verwenden?
Nein. Die Basic-Authentifizierung der REST-API akzeptiert nur Anwendungspasswörter. Im Test wurde das normale Anmeldepasswort mit rest_not_logged_in abgewiesen. Das ist gewollt, denn so bleibt Ihr Anmeldepasswort geheim und die Zwei-Faktor-Anmeldung im Backend unberührt.
Laufen Anwendungspasswörter ab?
Nein, sie gelten, bis Sie sie widerrufen. Planen Sie deshalb eine regelmäßige Durchsicht ein, etwa einmal im Quartal.
Brauche ich ein Plugin für die REST-API?
Nein. Beiträge, Seiten, Medien, Kategorien und Schlagwörter sind in WordPress eingebaut. Eigene Felder aus Plugins erscheinen nur, wenn das Plugin sie für die REST-API freigibt.
Testumfang
Wir haben den kompletten Ablauf auf einer Testinstallation mit WordPress 7.1.2 per curl durchgespielt, vom Anlegen des Benutzers bis zum Widerrufen des Zugangs. Auffällig war, dass Anwendungspasswörter ohne HTTPS zunächst nicht funktionierten und erst mit der Umgebungskennung „local“ griffen. Automatisierungsdienste wie Zapier und eigene Felder von Plugins haben wir nicht getestet. Prüfen Sie solche Anbindungen deshalb zuerst auf einer Kopie Ihrer Website.
Fazit
Mit einem eigenen Benutzer, einem Anwendungspasswort je Dienst und Beiträgen, die als Entwurf ankommen, automatisieren Sie wiederkehrende Inhalte, ohne die Kontrolle abzugeben. HTTPS, die kleinste passende Rolle und ein regelmäßiger Blick auf „Zuletzt verwendet“ halten den Zugang sicher. Wenn sich jemand dauerhaft um Updates, Backups und die Firewall Ihrer Website kümmern soll, übernimmt das die WordPress-Wartung von Marcel Schönfelder.
Weiterführende Anleitungen und Quellen
- Passwort-Richtlinien und Anwendungspasswörter verwalten
- WordPress REST-API absichern
- WordPress-Benutzerrollen und Rechte vergeben
- REST API Handbook: Posts
- REST API Handbook: Media
- REST API Handbook: Authentication
- Make WordPress Core: Application Passwords Integration Guide
- WP-CLI: wp user application-password


