Zum Hauptinhalt springen

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

Quellen und Dokumentation