---
title: "Anwendungspasswörter und REST-API: Inhalte in WordPress automatisiert anlegen"
date: 2026-09-30T23:11:37+02:00
modified: 2026-11-10T17:22:35+01:00
category: wordpress
type: how_to
author: Marcel Schönfelder
canonical: https://s-edv.com/anleitungen/wordpress-rest-api-anwendungspasswoerter-inhalte-automatisieren
keywords:
  - WordPress
  - REST-API
  - Anwendungspasswörter
  - Automatisierung
  - Sicherheit
reading_time: 8
---

# Anwendungspasswörter und REST-API: Inhalte in WordPress automatisiert anlegen

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.

**Kurzfassung:** Legen Sie für jede Automatisierung einen eigenen Benutzer mit der kleinsten passenden Rolle an, meist Mitarbeiter oder Autor. Erzeugen Sie für ihn unter **Benutzer > Profil** ein Anwendungspasswort. Anwendungspasswörter funktionieren nur über HTTPS. Mit dem Benutzernamen und dem Anwendungspasswort legen Sie per POST auf `/wp-json/wp/v2/posts` Beiträge an, am besten als Entwurf oder zur Prüfung. Bilder laden Sie über `/wp-json/wp/v2/media` hoch. Die Profilseite zeigt, wann und von welcher IP-Adresse ein Anwendungspasswort zuletzt benutzt wurde.

## Voraussetzungen

- [ ] **WordPress:** eine aktuelle Version. 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 lässt sich über die REST-API nachprüfen. Der Mitarbeiter bekommt beim Versuch, direkt zu veröffentlichen, die Fehlermeldung `rest_cannot_publish`. Einen Beitrag mit dem Status `pending` („Ausstehend“) kann er anlegen. Der Autor darf 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, der Versuch endet 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](https://s-edv.com/anleitungen/wordpress-benutzerrollen-rechte-vergeben).

> **Prüfen:** 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. Über HTTP liefert WordPress bei jedem Versuch nur `rest_not_logged_in`, obwohl das Passwort stimmt. 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:

```bash
$ wp user application-password create redaktion-api "Newsletter-Import" --porcelain
```

> **Prüfen:** 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.

```bash
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 unter anderem den Namen „redaktion-api“ und die Rolle „author“. Mit falschem Passwort antwortet WordPress mit Status 401:

```json
{"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.

> **Prüfen:** 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.

```bash
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 kommen korrekt an. Den Inhalt sollten Sie in Blockmarkup verpacken wie im Beispiel. Reines HTML funktioniert auch, landet im Block-Editor aber als klassischer Block.

> **Prüfen:** 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:

```bash
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:

```bash
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](https://s-edv.com/anleitungen/wordpress-bilder-seo-alt-text-dateiname-bildgroessen).

> **Prüfen:** Ö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:

```bash
$ wp user application-password list redaktion-api --fields=uuid,name,last_used,last_ip
$ wp user application-password delete redaktion-api UUID
```

Der widerrufene Zugang liefert 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](https://s-edv.com/anleitungen/wordpress-passwort-richtlinien-anwendungspasswoerter-verwalten). Welche Endpunkte Sie für nicht angemeldete Besucher einschränken können, steht in [REST-API absichern](https://s-edv.com/anleitungen/wordpress-rest-api-absichern-endpunkte-einschraenken).

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](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=artikel&utm_campaign=145) spielt Updates von WordPress, Plugins und Themes mit Kompatibilitätsprüfung ein, sichert wöchentlich auf externen Speicher und richtet eine Firewall ein.

> **Prüfen:** 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_in` trotz richtigem Passwort**

Die Website läuft ohne HTTPS, oder der Server leitet den Header `Authorization` nicht an PHP weiter. HTTPS prüfen, dann beim Hoster nachfragen.

**`rest_cannot_create` mit 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. Status `pending` verwenden oder bewusst die Rolle Autor vergeben.

**Beitrag landet sofort online**

Im JSON steht `status` auf `publish`. Ohne Statusangabe legt WordPress neue Beiträge standardmäßig als Entwurf an. Setzen Sie dennoch ausdrücklich `draft`, damit die Absicht im Skript erkennbar bleibt.

**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. Das normale Anmeldepasswort wird 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.

## 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](https://wordpressupdate.de/?utm_source=s-edv.com&utm_medium=fazit&utm_campaign=145).

## Weiterführende Anleitungen und Quellen

- [Passwort-Richtlinien und Anwendungspasswörter verwalten](https://s-edv.com/anleitungen/wordpress-passwort-richtlinien-anwendungspasswoerter-verwalten)
- [WordPress REST-API absichern](https://s-edv.com/anleitungen/wordpress-rest-api-absichern-endpunkte-einschraenken)
- [WordPress-Benutzerrollen und Rechte vergeben](https://s-edv.com/anleitungen/wordpress-benutzerrollen-rechte-vergeben)
- [REST API Handbook: Posts](https://developer.wordpress.org/rest-api/reference/posts/)
- [REST API Handbook: Media](https://developer.wordpress.org/rest-api/reference/media/)
- [REST API Handbook: Authentication](https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/)
- [Make WordPress Core: Application Passwords Integration Guide](https://make.wordpress.org/core/2020/11/05/application-passwords-integration-guide/)
- [WP-CLI: wp user application-password](https://developer.wordpress.org/cli/commands/user/application-password/)
