WP-CLI ist das wichtigste Werkzeug für alle, die mehr als eine WordPress-Installation betreuen. Fast alles, was im Backend geklickt wird, geht schneller, reproduzierbar und skriptbar auf der Kommandozeile.
Grundlagen
wp --info # Umgebung, PHP-Version, Pfade
wp core version --extra
wp core verify-checksums # Core-Dateien gegen WordPress.org prüfen
wp plugin verify-checksums --all
verify-checksums ist auch ein schneller erster Malware-Check: Veränderte Core- oder Plugin-Dateien fallen sofort auf.
Updates kontrolliert einspielen
wp plugin list --update=available --fields=name,version,update_version
wp plugin update --all --dry-run
wp plugin update woocommerce --version=9.4.2 # gezielt eine Version
wp core update --minor # nur Minor-Releases
Datenbank
wp db export backup-$(date +%F).sql --add-drop-table
wp db size --tables --human-readable
wp search-replace 'https://staging.example.ch' 'https://example.ch' --all-tables --precise --dry-run
wp transient delete --expired
wp option list --autoload=on --fields=option_name,size_bytes --orderby=size_bytes --order=desc | head -20
Wichtig: search-replace immer zuerst mit --dry-run. Es behandelt serialisierte Daten korrekt, ein simples SQL-REPLACE zerstört sie.
Benutzer und Sicherheit
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
wp user session destroy --all --all-users # alle Sessions beenden
wp config shuffle-salts # neue Salts, erzwingt Neu-Login
wp user update 1 --user_pass="$(openssl rand -base64 24)"
Remote und mehrere Sites
Mit Aliasen in ~/.wp-cli/config.yml lassen sich Server direkt ansprechen:
@prod:
ssh: deploy@prod.example.ch/var/www/html
@staging:
ssh: deploy@staging.example.ch/var/www/html
wp @prod plugin list --status=active
wp @staging db export - | gzip > staging.sql.gz
Nützliche Pakete und Tricks
wp cron event list/wp cron event run --due-now: WP-Cron debuggen.wp eval 'echo get_option("home");': Schnell PHP im WordPress-Kontext ausführen.wp shell: Interaktive REPL.wp profile stage(Paket wp-cli/profile-command): Ladezeiten nach Phasen und Hooks.wp doctor check --all(Paket wp-cli/doctor-command): Gesundheitscheck mit Autoload-Grösse, Cron, Debug-Modus.
Fallstrick: CLI-PHP ≠ FPM-PHP
Die PHP-Version der Kommandozeile ist oft eine andere als die des Webservers. wp --info zeigt die CLI-Version, Werkzeuge → Website-Zustand → Info → Server die Web-Version. Bei Problemen den Binary explizit setzen: WP_CLI_PHP=/usr/bin/php8.3 wp ….
Weiterführende Artikel
- Update-Strategie: Auto-Updates, Staging und Rollback
- Datenbank-Optimierung: Autoload, Transients, Indizes und Cron
- Staging-Umgebungen und Deployment-Workflows