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.

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.

Core & Info

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

wp --info

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

wp --version

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

wp cli update

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

wp cli check-update

wp core version — Zeigt die installierte WordPress-Version.

wp core version

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

wp core check-update

Core-Installation & Update

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

wp core download --locale=en_US

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

wp core download --version=6.5

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

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).

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.

wp core update

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

wp core update --version=6.5.2

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

wp core update-db

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

wp core verify-checksums

Plugins

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

wp plugin list

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

wp plugin install woocommerce

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

wp plugin install wordfence --activate

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

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

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

wp plugin activate woocommerce

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

wp plugin deactivate woocommerce

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

wp plugin deactivate --all

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

wp plugin delete hello-dolly

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

wp plugin update woocommerce

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

wp plugin update --all

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

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.

wp plugin verify-checksums --all

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

wp plugin status woocommerce

Themes

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

wp theme list

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

wp theme install twentytwentyfour

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

wp theme install astra --activate

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

wp theme activate twentytwentyfour

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

wp theme delete twentytwentythree

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

wp theme update astra

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

wp theme update --all

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

wp theme status twentytwentyfour

Nutzer

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

wp user list

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

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.

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.

wp user update 1 --user_pass=NewPassword123

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

wp user update 5 --role=administrator

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

wp user delete 5 --reassign=1

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

wp user get 1

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

wp user list --role=administrator

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

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

Beiträge & Inhalte

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

wp post list

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

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.

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.

wp post update 42 --post_status=draft

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

wp post delete 42

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

wp post delete 42 --force

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

wp post get 42

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

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

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

wp post meta list 42

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

wp post meta update 42 _thumbnail_id 99

Optionen (wp_options)

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

wp option get siteurl

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

wp option update blogname 'My New Site Name'

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

wp option list

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

wp option list --search='siteurl'

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

wp option delete deprecated_setting

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

wp option add my_custom_option 'value123'

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

wp option get active_plugins --format=json

Datenbank

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

wp db export backup.sql

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

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

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

wp db import backup.sql

wp db optimize — Optimiert alle Datenbanktabellen.

wp db optimize

wp db repair — Repariert alle Datenbanktabellen.

wp db repair

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

wp db size

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

wp db size --tables

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

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.

wp db cli

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

wp db check

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

wp db tables

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

wp db reset --yes

Suchen & Ersetzen

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

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.

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.

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.

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.

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.

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

Cache & Transients

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

wp cache flush

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

wp transient delete --all

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

wp transient delete --expired

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

wp transient get my_cached_data

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

wp rewrite flush

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

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.

wp media regenerate --yes

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

wp media regenerate --only-missing

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

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

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

wp media image-size

Wartung & Multisite

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

wp cron event list

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

wp cron event run --all

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

wp cron event run wp_scheduled_auto_draft_delete

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

wp cron test

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

wp maintenance-mode activate

wp maintenance-mode deactivate — Deaktiviert den Wartungsmodus.

wp maintenance-mode deactivate

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

wp site list

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

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

Scaffolding & Export

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

wp scaffold plugin my-custom-plugin

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

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

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

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.

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

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

wp export --dir=./exports/

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

wp import export.xml --authors=create

Ausgabeformate & globale Flags

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

wp plugin list --format=table

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

wp plugin list --format=json

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

wp user list --format=csv

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

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

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

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

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

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

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

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.

wp option get siteurl --skip-plugins

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

wp core version --skip-themes

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.

Verwandte Kommandos

  • artisan – Kommandozeilen-Werkzeug des PHP-Frameworks Laravel
  • cargo – Build-Werkzeug und Paketmanager für Rust
  • composer – Abhängigkeitsverwaltung für PHP-Projekte