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 --infowp --version — Zeigt die installierte WP-CLI-Version.
wp --versionwp cli update — Aktualisiert WP-CLI auf die neueste stabile Version.
wp cli updatewp cli check-update — Prüft, ob eine neuere WP-CLI-Version verfügbar ist.
wp cli check-updatewp core version — Zeigt die installierte WordPress-Version.
wp core versionwp core check-update — Prüft, ob Updates für den WordPress-Core verfügbar sind.
wp core check-updateCore-Installation & Update
wp core download — Lädt die aktuellen WordPress-Core-Dateien herunter.
wp core download --locale=en_USwp core download --version=<version> — Lädt eine bestimmte WordPress-Version herunter.
wp core download --version=6.5wp 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=localhostwp 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.comwp core update — Aktualisiert den WordPress-Core auf die neueste Version.
wp core updatewp core update --version=<version> — Aktualisiert auf eine bestimmte WordPress-Version.
wp core update --version=6.5.2wp core update-db — Führt die Datenbank-Upgrade-Routine nach einem Core-Update aus.
wp core update-dbwp core verify-checksums — Prüft die WordPress-Core-Dateien gegen ihre Prüfsummen. Erkennt veränderte oder infizierte Dateien.
wp core verify-checksumsPlugins
wp plugin list — Listet alle installierten Plugins mit Name, Status, Update-Verfügbarkeit und Version.
wp plugin listwp plugin install <plugin> — Installiert ein Plugin aus dem WordPress.org-Verzeichnis.
wp plugin install woocommercewp plugin install <plugin> --activate — Installiert ein Plugin und aktiviert es sofort.
wp plugin install wordfence --activatewp plugin install <url> — Installiert ein Plugin von einer ZIP-URL.
wp plugin install https://example.com/my-plugin.zip --activatewp plugin activate <plugin> — Aktiviert ein installiertes Plugin.
wp plugin activate woocommercewp plugin deactivate <plugin> — Deaktiviert ein Plugin, ohne es zu entfernen.
wp plugin deactivate woocommercewp plugin deactivate --all — Deaktiviert alle Plugins auf einmal. Nützlich zur Fehlersuche.
wp plugin deactivate --allwp plugin delete <plugin> — Löscht ein Plugin (deaktiviert es bei Bedarf und entfernt die Dateien).
wp plugin delete hello-dollywp plugin update <plugin> — Aktualisiert ein bestimmtes Plugin auf die neueste Version.
wp plugin update woocommercewp plugin update --all — Aktualisiert alle installierten Plugins.
wp plugin update --allwp 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 --allwp plugin status <plugin> — Zeigt detaillierte Statusinformationen zu einem Plugin.
wp plugin status woocommerceThemes
wp theme list — Listet alle installierten Themes mit Status, Update-Verfügbarkeit und Version.
wp theme listwp theme install <theme> — Installiert ein Theme aus dem WordPress.org-Verzeichnis.
wp theme install twentytwentyfourwp theme install <theme> --activate — Installiert ein Theme und aktiviert es sofort.
wp theme install astra --activatewp theme activate <theme> — Aktiviert ein installiertes Theme.
wp theme activate twentytwentyfourwp theme delete <theme> — Löscht ein inaktives Theme.
wp theme delete twentytwentythreewp theme update <theme> — Aktualisiert ein bestimmtes Theme.
wp theme update astrawp theme update --all — Aktualisiert alle installierten Themes.
wp theme update --allwp theme status <theme> — Zeigt detaillierte Informationen zu einem Theme.
wp theme status twentytwentyfourNutzer
wp user list — Listet alle Nutzer mit ID, Login, E-Mail und Rolle.
wp user listwp user create <login> <email> --role=<role> — Legt einen neuen Nutzer mit einer bestimmten Rolle an.
wp user create editor editor@example.com --role=editorwp 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=StrongPass123wp user update <user_id> --user_pass=<pass> — Setzt das Passwort eines Nutzers zurück.
wp user update 1 --user_pass=NewPassword123wp user update <user_id> --role=<role> — Ändert die Rolle eines Nutzers.
wp user update 5 --role=administratorwp user delete <user_id> — Löscht einen Nutzer. Fragt nach der Übertragung seiner Inhalte.
wp user delete 5 --reassign=1wp user get <user_id> — Zeigt detaillierte Informationen zu einem bestimmten Nutzer.
wp user get 1wp user list --role=administrator — Listet alle Nutzer mit einer bestimmten Rolle.
wp user list --role=administratorwp user generate --count=<n> --role=<role> — Erzeugt Testnutzer für Testzwecke.
wp user generate --count=10 --role=subscriberBeiträge & Inhalte
wp post list — Listet alle Beiträge mit ID, Titel, Status und Datum.
wp post listwp post list --post_type=<type> --post_status=<status> — Listet Beiträge gefiltert nach Typ und Status.
wp post list --post_type=page --post_status=draftwp 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=publishwp post update <post_id> --post_status=<status> — Aktualisiert den Status oder andere Felder eines Beitrags.
wp post update 42 --post_status=draftwp post delete <post_id> — Verschiebt einen Beitrag in den Papierkorb.
wp post delete 42wp post delete <post_id> --force — Löscht einen Beitrag endgültig (umgeht den Papierkorb).
wp post delete 42 --forcewp post get <post_id> — Zeigt detaillierte Informationen zu einem bestimmten Beitrag.
wp post get 42wp post generate --count=<n> — Erzeugt Testbeiträge für Testzwecke.
wp post generate --count=50 --post_type=post --post_status=publishwp post meta list <post_id> — Listet alle Meta-Felder eines bestimmten Beitrags.
wp post meta list 42wp post meta update <post_id> <key> <value> — Aktualisiert oder ergänzt ein Beitrags-Meta-Feld.
wp post meta update 42 _thumbnail_id 99Optionen (wp_options)
wp option get <key> — Liest den Wert einer bestimmten WordPress-Option.
wp option get siteurlwp 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 listwp 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_settingwp 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=jsonDatenbank
wp db export <file> — Exportiert die Datenbank in eine SQL-Datei.
wp db export backup.sqlwp db export - | gzip > <file> — Exportiert die Datenbank und komprimiert sie mit gzip.
wp db export - | gzip > backup.sql.gzwp db import <file> — Importiert eine SQL-Datei in die Datenbank.
wp db import backup.sqlwp db optimize — Optimiert alle Datenbanktabellen.
wp db optimizewp db repair — Repariert alle Datenbanktabellen.
wp db repairwp db size — Zeigt die Gesamtgröße der Datenbank.
wp db sizewp db size --tables — Zeigt die Größe jeder einzelnen Tabelle.
wp db size --tableswp 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 cliwp db check — Prüft alle Datenbanktabellen auf Fehler.
wp db checkwp db tables — Listet alle Tabellen der WordPress-Datenbank.
wp db tableswp db reset --yes — Löscht alle Tabellen und legt sie aus dem Schema neu an. Vernichtet alle Daten.
wp db reset --yesSuchen & 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-runwp 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_postmetawp 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' --precisewp 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-tableswp 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.sqlCache & Transients
wp cache flush — Leert den WordPress-Objekt-Cache.
wp cache flushwp transient delete --all — Löscht alle Transients aus der Datenbank.
wp transient delete --allwp transient delete --expired — Löscht nur abgelaufene Transients.
wp transient delete --expiredwp transient get <key> — Liest den Wert eines bestimmten Transients.
wp transient get my_cached_datawp rewrite flush — Leert und erzeugt die Rewrite-Regeln neu (behebt Permalink-Probleme).
wp rewrite flushwp 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 --yeswp media regenerate --only-missing — Erzeugt nur fehlende Bildgrößen neu (schneller als eine vollständige Neuerzeugung).
wp media regenerate --only-missingwp 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-sizeWartung & Multisite
wp cron event list — Listet alle geplanten Cron-Ereignisse mit ihrer nächsten Ausführungszeit.
wp cron event listwp cron event run --all — Führt alle ausstehenden Cron-Ereignisse sofort aus.
wp cron event run --allwp cron event run <hook> — Führt ein bestimmtes Cron-Ereignis anhand seines Hook-Namens aus.
wp cron event run wp_scheduled_auto_draft_deletewp cron test — Testet, ob das WP-Cron-Spawning korrekt funktioniert.
wp cron testwp maintenance-mode activate — Aktiviert den Wartungsmodus (zeigt Besuchern eine Wartungsseite).
wp maintenance-mode activatewp maintenance-mode deactivate — Deaktiviert den Wartungsmodus.
wp maintenance-mode deactivatewp site list — Listet alle Seiten eines WordPress-Multisite-Netzwerks.
wp site listwp --url=<site_url> <command> — Führt einen WP-CLI-Befehl gegen eine bestimmte Seite eines Multisite-Netzwerks aus.
wp --url=subsite.example.com plugin listScaffolding & Export
wp scaffold plugin <slug> — Erzeugt Boilerplate-Dateien für ein neues Plugin.
wp scaffold plugin my-custom-pluginwp scaffold child-theme <slug> --parent_theme=<parent> — Erzeugt ein Child-Theme.
wp scaffold child-theme my-child --parent_theme=twentytwentyfourwp scaffold post-type <slug> --plugin=<plugin> — Erzeugt Code für einen benutzerdefinierten Inhaltstyp.
wp scaffold post-type product --plugin=my-custom-plugin --label=Productwp scaffold taxonomy <slug> --post_types=<types> — Erzeugt Code für eine benutzerdefinierte Taxonomie.
wp scaffold taxonomy genre --post_types=book --plugin=my-custom-pluginwp 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=createAusgabeformate & globale Flags
wp <command> --format=table — Gibt die Ausgabe als ASCII-Tabelle aus (Standardformat).
wp plugin list --format=tablewp <command> --format=json — Gibt die Ausgabe als JSON-Array aus.
wp plugin list --format=jsonwp <command> --format=csv — Gibt die Ausgabe als kommagetrennte Werte aus.
wp user list --format=csvwp <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 deletewp <command> --fields=<field1>,<field2> — Beschränkt die Ausgabe auf bestimmte Spalten.
wp plugin list --fields=name,status,versionwp <command> --path=<path> — Führt WP-CLI gegen eine WordPress-Installation an einem bestimmten Pfad aus.
wp core version --path=/var/www/htmlwp <command> --ssh=<host> — Führt WP-CLI auf einem entfernten Server per SSH aus.
wp plugin list --ssh=deploy@server.example.com:/var/www/htmlwp <command> --skip-plugins — Läuft ohne geladene Plugins. Nützlich, wenn ein Plugin fatale Fehler verursacht.
wp option get siteurl --skip-pluginswp <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.
Weiterführende Links
- WP-CLI-Handbuch – offizielle Dokumentation, Anleitungen und Befehlsreferenz (englisch)
- developer.wordpress.org/cli – vollständige Befehlsreferenz im WordPress-Entwicklerportal (englisch)
- de.wordpress.org – deutschsprachige WordPress-Seite mit Downloads, News und Support