# WP-CLI — WordPress über die Kommandozeile steuern

> Praxis-Guide zu WP-CLI — WordPress-Plugins, Themes, Core, Nutzer und die Datenbank per Kommandozeile verwalten, ganz ohne Browser.

Source: https://www.jpkc.com/db/cheatsheets/build-languages/wp-cli/

<!-- PROSE:intro -->
WP-CLI ist das offizielle Kommandozeilen-Werkzeug für WordPress, gesteuert über das Binary `wp`. Damit verwaltest du Plugins, Themes, den Core, die Datenbank und Nutzer, ohne je einen Browser zu öffnen – ideal für Automatisierung, Wartung und Massenoperationen, ob für eine einzelne Seite oder ein ganzes Multisite-Netzwerk. Dieser Guide bündelt die Befehle, die du am häufigsten brauchst, von der WordPress-Installation bis zum Suchen-und-Ersetzen einer Domain über die gesamte Datenbank.
<!-- PROSE:intro:end -->

## Core & Info

`wp --info` — Zeigt Informationen zur WP-CLI-Umgebung (PHP-Version, Pfade, Betriebssystem).

```bash
wp --info
```

`wp --version` — Zeigt die installierte WP-CLI-Version.

```bash
wp --version
```

`wp cli update` — Aktualisiert WP-CLI auf die neueste stabile Version.

```bash
wp cli update
```

`wp cli check-update` — Prüft, ob eine neuere WP-CLI-Version verfügbar ist.

```bash
wp cli check-update
```

`wp core version` — Zeigt die installierte WordPress-Version.

```bash
wp core version
```

`wp core check-update` — Prüft, ob Updates für den WordPress-Core verfügbar sind.

```bash
wp core check-update
```

## Core-Installation & Update

`wp core download` — Lädt die aktuellen WordPress-Core-Dateien herunter.

```bash
wp core download --locale=en_US
```

`wp core download --version=<version>` — Lädt eine bestimmte WordPress-Version herunter.

```bash
wp core download --version=6.5
```

`wp core config --dbname=<db> --dbuser=<user> --dbpass=<pass>` — Erzeugt eine wp-config.php mit den Datenbank-Zugangsdaten.

```bash
wp core config --dbname=wordpress --dbuser=root --dbpass=secret --dbhost=localhost
```

`wp core install --url=<url> --title=<title> --admin_user=<user> --admin_password=<pass> --admin_email=<email>` — Führt die WordPress-Installation aus (legt Tabellen an, richtet das Admin-Konto ein).

```bash
wp core install --url=example.com --title='My Site' --admin_user=admin --admin_password=secret --admin_email=admin@example.com
```

`wp core update` — Aktualisiert den WordPress-Core auf die neueste Version.

```bash
wp core update
```

`wp core update --version=<version>` — Aktualisiert auf eine bestimmte WordPress-Version.

```bash
wp core update --version=6.5.2
```

`wp core update-db` — Führt die Datenbank-Upgrade-Routine nach einem Core-Update aus.

```bash
wp core update-db
```

`wp core verify-checksums` — Prüft die WordPress-Core-Dateien gegen ihre Prüfsummen. Erkennt veränderte oder infizierte Dateien.

```bash
wp core verify-checksums
```

## Plugins

`wp plugin list` — Listet alle installierten Plugins mit Name, Status, Update-Verfügbarkeit und Version.

```bash
wp plugin list
```

`wp plugin install <plugin>` — Installiert ein Plugin aus dem WordPress.org-Verzeichnis.

```bash
wp plugin install woocommerce
```

`wp plugin install <plugin> --activate` — Installiert ein Plugin und aktiviert es sofort.

```bash
wp plugin install wordfence --activate
```

`wp plugin install <url>` — Installiert ein Plugin von einer ZIP-URL.

```bash
wp plugin install https://example.com/my-plugin.zip --activate
```

`wp plugin activate <plugin>` — Aktiviert ein installiertes Plugin.

```bash
wp plugin activate woocommerce
```

`wp plugin deactivate <plugin>` — Deaktiviert ein Plugin, ohne es zu entfernen.

```bash
wp plugin deactivate woocommerce
```

`wp plugin deactivate --all` — Deaktiviert alle Plugins auf einmal. Nützlich zur Fehlersuche.

```bash
wp plugin deactivate --all
```

`wp plugin delete <plugin>` — Löscht ein Plugin (deaktiviert es bei Bedarf und entfernt die Dateien).

```bash
wp plugin delete hello-dolly
```

`wp plugin update <plugin>` — Aktualisiert ein bestimmtes Plugin auf die neueste Version.

```bash
wp plugin update woocommerce
```

`wp plugin update --all` — Aktualisiert alle installierten Plugins.

```bash
wp plugin update --all
```

`wp plugin search <keyword>` — Durchsucht das WordPress.org-Plugin-Verzeichnis.

```bash
wp plugin search 'security firewall'
```

`wp plugin verify-checksums --all` — Prüft die Plugin-Dateien gegen die WordPress.org-Prüfsummen, um Manipulationen zu erkennen.

```bash
wp plugin verify-checksums --all
```

`wp plugin status <plugin>` — Zeigt detaillierte Statusinformationen zu einem Plugin.

```bash
wp plugin status woocommerce
```

## Themes

`wp theme list` — Listet alle installierten Themes mit Status, Update-Verfügbarkeit und Version.

```bash
wp theme list
```

`wp theme install <theme>` — Installiert ein Theme aus dem WordPress.org-Verzeichnis.

```bash
wp theme install twentytwentyfour
```

`wp theme install <theme> --activate` — Installiert ein Theme und aktiviert es sofort.

```bash
wp theme install astra --activate
```

`wp theme activate <theme>` — Aktiviert ein installiertes Theme.

```bash
wp theme activate twentytwentyfour
```

`wp theme delete <theme>` — Löscht ein inaktives Theme.

```bash
wp theme delete twentytwentythree
```

`wp theme update <theme>` — Aktualisiert ein bestimmtes Theme.

```bash
wp theme update astra
```

`wp theme update --all` — Aktualisiert alle installierten Themes.

```bash
wp theme update --all
```

`wp theme status <theme>` — Zeigt detaillierte Informationen zu einem Theme.

```bash
wp theme status twentytwentyfour
```

## Nutzer

`wp user list` — Listet alle Nutzer mit ID, Login, E-Mail und Rolle.

```bash
wp user list
```

`wp user create <login> <email> --role=<role>` — Legt einen neuen Nutzer mit einer bestimmten Rolle an.

```bash
wp user create editor editor@example.com --role=editor
```

`wp user create <login> <email> --role=administrator --user_pass=<pass>` — Legt einen neuen Admin-Nutzer mit einem bestimmten Passwort an.

```bash
wp user create newadmin admin@example.com --role=administrator --user_pass=StrongPass123
```

`wp user update <user_id> --user_pass=<pass>` — Setzt das Passwort eines Nutzers zurück.

```bash
wp user update 1 --user_pass=NewPassword123
```

`wp user update <user_id> --role=<role>` — Ändert die Rolle eines Nutzers.

```bash
wp user update 5 --role=administrator
```

`wp user delete <user_id>` — Löscht einen Nutzer. Fragt nach der Übertragung seiner Inhalte.

```bash
wp user delete 5 --reassign=1
```

`wp user get <user_id>` — Zeigt detaillierte Informationen zu einem bestimmten Nutzer.

```bash
wp user get 1
```

`wp user list --role=administrator` — Listet alle Nutzer mit einer bestimmten Rolle.

```bash
wp user list --role=administrator
```

`wp user generate --count=<n> --role=<role>` — Erzeugt Testnutzer für Testzwecke.

```bash
wp user generate --count=10 --role=subscriber
```

## Beiträge & Inhalte

`wp post list` — Listet alle Beiträge mit ID, Titel, Status und Datum.

```bash
wp post list
```

`wp post list --post_type=<type> --post_status=<status>` — Listet Beiträge gefiltert nach Typ und Status.

```bash
wp post list --post_type=page --post_status=draft
```

`wp post create --post_title='<title>' --post_status=publish` — Erstellt einen neuen Beitrag und veröffentlicht ihn sofort.

```bash
wp post create --post_title='Hello World' --post_content='My first post.' --post_status=publish
```

`wp post update <post_id> --post_status=<status>` — Aktualisiert den Status oder andere Felder eines Beitrags.

```bash
wp post update 42 --post_status=draft
```

`wp post delete <post_id>` — Verschiebt einen Beitrag in den Papierkorb.

```bash
wp post delete 42
```

`wp post delete <post_id> --force` — Löscht einen Beitrag endgültig (umgeht den Papierkorb).

```bash
wp post delete 42 --force
```

`wp post get <post_id>` — Zeigt detaillierte Informationen zu einem bestimmten Beitrag.

```bash
wp post get 42
```

`wp post generate --count=<n>` — Erzeugt Testbeiträge für Testzwecke.

```bash
wp post generate --count=50 --post_type=post --post_status=publish
```

`wp post meta list <post_id>` — Listet alle Meta-Felder eines bestimmten Beitrags.

```bash
wp post meta list 42
```

`wp post meta update <post_id> <key> <value>` — Aktualisiert oder ergänzt ein Beitrags-Meta-Feld.

```bash
wp post meta update 42 _thumbnail_id 99
```

## Optionen (wp_options)

`wp option get <key>` — Liest den Wert einer bestimmten WordPress-Option.

```bash
wp option get siteurl
```

`wp option update <key> <value>` — Aktualisiert eine WordPress-Option.

```bash
wp option update blogname 'My New Site Name'
```

`wp option list` — Listet alle Optionen aus der Tabelle wp_options.

```bash
wp option list
```

`wp option list --search='<pattern>'` — Sucht nach Optionen, die einem Muster entsprechen.

```bash
wp option list --search='siteurl'
```

`wp option delete <key>` — Löscht eine bestimmte Option aus der Datenbank.

```bash
wp option delete deprecated_setting
```

`wp option add <key> <value>` — Fügt der Datenbank eine neue Option hinzu.

```bash
wp option add my_custom_option 'value123'
```

`wp option get <key> --format=json` — Gibt einen serialisierten Optionswert als JSON aus.

```bash
wp option get active_plugins --format=json
```

## Datenbank

`wp db export <file>` — Exportiert die Datenbank in eine SQL-Datei.

```bash
wp db export backup.sql
```

`wp db export - | gzip > <file>` — Exportiert die Datenbank und komprimiert sie mit gzip.

```bash
wp db export - | gzip > backup.sql.gz
```

`wp db import <file>` — Importiert eine SQL-Datei in die Datenbank.

```bash
wp db import backup.sql
```

`wp db optimize` — Optimiert alle Datenbanktabellen.

```bash
wp db optimize
```

`wp db repair` — Repariert alle Datenbanktabellen.

```bash
wp db repair
```

`wp db size` — Zeigt die Gesamtgröße der Datenbank.

```bash
wp db size
```

`wp db size --tables` — Zeigt die Größe jeder einzelnen Tabelle.

```bash
wp db size --tables
```

`wp db query '<sql>'` — Führt eine rohe SQL-Abfrage auf der Datenbank aus.

```bash
wp db query 'SELECT COUNT(*) FROM wp_posts WHERE post_status="publish"'
```

`wp db cli` — Öffnet eine interaktive MySQL-/MariaDB-Shell für die WordPress-Datenbank.

```bash
wp db cli
```

`wp db check` — Prüft alle Datenbanktabellen auf Fehler.

```bash
wp db check
```

`wp db tables` — Listet alle Tabellen der WordPress-Datenbank.

```bash
wp db tables
```

`wp db reset --yes` — Löscht alle Tabellen und legt sie aus dem Schema neu an. Vernichtet alle Daten.

```bash
wp db reset --yes
```

## Suchen & Ersetzen

`wp search-replace '<old>' '<new>'` — Sucht und ersetzt über alle Datenbanktabellen hinweg. Behandelt serialisierte Daten korrekt.

```bash
wp search-replace 'http://old-domain.com' 'https://new-domain.com'
```

`wp search-replace '<old>' '<new>' --dry-run` — Zeigt eine Vorschau, wie viele Ersetzungen vorgenommen würden, ohne etwas zu ändern.

```bash
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --dry-run
```

`wp search-replace '<old>' '<new>' <table>` — Beschränkt das Suchen-und-Ersetzen auf bestimmte Tabellen.

```bash
wp search-replace 'http://old.com' 'https://new.com' wp_posts wp_postmeta
```

`wp search-replace '<old>' '<new>' --precise` — Nutzt den Precise-Modus für eine genauere Behandlung serialisierter Daten.

```bash
wp search-replace 'old-domain.com' 'new-domain.com' --precise
```

`wp search-replace '<old>' '<new>' --all-tables` — Sucht und ersetzt über alle Tabellen, auch solche außerhalb von WordPress.

```bash
wp search-replace 'staging.example.com' 'www.example.com' --all-tables
```

`wp search-replace '<old>' '<new>' --export=<file>` — Exportiert das Ergebnis als SQL-Datei, statt die Datenbank direkt zu ändern.

```bash
wp search-replace 'http://dev.local' 'https://www.example.com' --export=migrated.sql
```

## Cache & Transients

`wp cache flush` — Leert den WordPress-Objekt-Cache.

```bash
wp cache flush
```

`wp transient delete --all` — Löscht alle Transients aus der Datenbank.

```bash
wp transient delete --all
```

`wp transient delete --expired` — Löscht nur abgelaufene Transients.

```bash
wp transient delete --expired
```

`wp transient get <key>` — Liest den Wert eines bestimmten Transients.

```bash
wp transient get my_cached_data
```

`wp rewrite flush` — Leert und erzeugt die Rewrite-Regeln neu (behebt Permalink-Probleme).

```bash
wp rewrite flush
```

`wp rewrite structure '<structure>'` — Legt die Permalink-Struktur fest.

```bash
wp rewrite structure '/%postname%/'
```

## Medien & Uploads

`wp media regenerate` — Erzeugt alle Bild-Thumbnails neu. Nützlich nach einem Theme-Wechsel oder geänderten Bildgrößen.

```bash
wp media regenerate --yes
```

`wp media regenerate --only-missing` — Erzeugt nur fehlende Bildgrößen neu (schneller als eine vollständige Neuerzeugung).

```bash
wp media regenerate --only-missing
```

`wp media import <file_or_url>` — Importiert eine Datei oder URL als Anhang in die Mediathek.

```bash
wp media import ./photo.jpg --title='My Photo'
```

`wp media image-size` — Listet alle registrierten Bildgrößen.

```bash
wp media image-size
```

## Wartung & Multisite

`wp cron event list` — Listet alle geplanten Cron-Ereignisse mit ihrer nächsten Ausführungszeit.

```bash
wp cron event list
```

`wp cron event run --all` — Führt alle ausstehenden Cron-Ereignisse sofort aus.

```bash
wp cron event run --all
```

`wp cron event run <hook>` — Führt ein bestimmtes Cron-Ereignis anhand seines Hook-Namens aus.

```bash
wp cron event run wp_scheduled_auto_draft_delete
```

`wp cron test` — Testet, ob das WP-Cron-Spawning korrekt funktioniert.

```bash
wp cron test
```

`wp maintenance-mode activate` — Aktiviert den Wartungsmodus (zeigt Besuchern eine Wartungsseite).

```bash
wp maintenance-mode activate
```

`wp maintenance-mode deactivate` — Deaktiviert den Wartungsmodus.

```bash
wp maintenance-mode deactivate
```

`wp site list` — Listet alle Seiten eines WordPress-Multisite-Netzwerks.

```bash
wp site list
```

`wp --url=<site_url> <command>` — Führt einen WP-CLI-Befehl gegen eine bestimmte Seite eines Multisite-Netzwerks aus.

```bash
wp --url=subsite.example.com plugin list
```

## Scaffolding & Export

`wp scaffold plugin <slug>` — Erzeugt Boilerplate-Dateien für ein neues Plugin.

```bash
wp scaffold plugin my-custom-plugin
```

`wp scaffold child-theme <slug> --parent_theme=<parent>` — Erzeugt ein Child-Theme.

```bash
wp scaffold child-theme my-child --parent_theme=twentytwentyfour
```

`wp scaffold post-type <slug> --plugin=<plugin>` — Erzeugt Code für einen benutzerdefinierten Inhaltstyp.

```bash
wp scaffold post-type product --plugin=my-custom-plugin --label=Product
```

`wp scaffold taxonomy <slug> --post_types=<types>` — Erzeugt Code für eine benutzerdefinierte Taxonomie.

```bash
wp scaffold taxonomy genre --post_types=book --plugin=my-custom-plugin
```

`wp export` — Exportiert Inhalte in eine WordPress-eXtended-RSS-Datei (WXR-XML).

```bash
wp export --dir=./exports/
```

`wp import <file> --authors=create` — Importiert Inhalte aus einer WXR-XML-Datei.

```bash
wp import export.xml --authors=create
```

## Ausgabeformate & globale Flags

`wp <command> --format=table` — Gibt die Ausgabe als ASCII-Tabelle aus (Standardformat).

```bash
wp plugin list --format=table
```

`wp <command> --format=json` — Gibt die Ausgabe als JSON-Array aus.

```bash
wp plugin list --format=json
```

`wp <command> --format=csv` — Gibt die Ausgabe als kommagetrennte Werte aus.

```bash
wp user list --format=csv
```

`wp <command> --format=ids` — Gibt nur die IDs aus, leerzeichengetrennt. Nützlich zum Weiterleiten per Pipe.

```bash
wp post list --post_type=revision --format=ids | xargs wp post delete
```

`wp <command> --fields=<field1>,<field2>` — Beschränkt die Ausgabe auf bestimmte Spalten.

```bash
wp plugin list --fields=name,status,version
```

`wp <command> --path=<path>` — Führt WP-CLI gegen eine WordPress-Installation an einem bestimmten Pfad aus.

```bash
wp core version --path=/var/www/html
```

`wp <command> --ssh=<host>` — Führt WP-CLI auf einem entfernten Server per SSH aus.

```bash
wp plugin list --ssh=deploy@server.example.com:/var/www/html
```

`wp <command> --skip-plugins` — Läuft ohne geladene Plugins. Nützlich, wenn ein Plugin fatale Fehler verursacht.

```bash
wp option get siteurl --skip-plugins
```

`wp <command> --skip-themes` — Läuft ohne das aktive Theme.

```bash
wp core version --skip-themes
```

<!-- PROSE:outro -->
## Fazit

WP-CLI verwandelt wiederkehrende WordPress-Aufgaben in einzelne, skriptbare Befehle – Updates, Backups, Migrationen und Nutzerverwaltung laufen alle direkt in der Shell. Mit den löschenden Kommandos solltest du vorsichtig sein: `wp db reset`, `wp db drop` und `wp site empty` löschen Inhalte und Tabellen unwiderruflich, und `--yes` umgeht die Sicherheitsabfrage. Führe `wp search-replace` immer zuerst mit `--dry-run` aus und prüfe `wp user delete` doppelt, bevor du bestätigst. Lass `wp` möglichst nicht als root laufen – setze `--allow-root` nur bewusst und nur dort ein, wo du die Folgen vollständig überblickst.

## Weiterführende Links

- [WP-CLI-Handbuch](https://make.wordpress.org/cli/handbook/) – offizielle Dokumentation, Anleitungen und Befehlsreferenz (englisch)
- [developer.wordpress.org/cli](https://developer.wordpress.org/cli/commands/) – vollständige Befehlsreferenz im WordPress-Entwicklerportal (englisch)
- [de.wordpress.org](https://de.wordpress.org/) – deutschsprachige WordPress-Seite mit Downloads, News und Support
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [artisan](https://www.jpkc.com/db/cheatsheets/build-languages/artisan/) – Kommandozeilen-Werkzeug des PHP-Frameworks Laravel
- [cargo](https://www.jpkc.com/db/cheatsheets/build-languages/cargo/) – Build-Werkzeug und Paketmanager für Rust
- [composer](https://www.jpkc.com/db/cheatsheets/build-languages/composer/) – Abhängigkeitsverwaltung für PHP-Projekte

