WordPress mit WP-CLI nutzen¶
WP-CLI (WordPress Command Line Interface) ist ein Kommandozeilen-Werkzeug für WordPress, mit dem viele typische WordPress-Aufgaben direkt im Terminal ausgeführt werden können – schnell, skriptbar und ohne Login ins Web-Backend. Diese Anleitung zeigt, wie man die WP-CLI für WordPress auf einen Managed Server über die Shell inklusive der erforderlichen Cronjobs einrichtet und nutzt.
Neben praktischen Befehlen zeigt diese Anleitung wie man bei WordPress die Ausführung des Cronjobs per WP-CLI einrichtet.
Voraussetzungen¶
Um WP-CLI auf Ihrem Managed Server zu nutzen, stellen Sie bitte sicher, dass Sie:
- ein Endgerät mit einem Terminal zur Verfügung haben, zum Beispiel ein Windows PC mit PuTTy.
- Aktivierter Shell Zugriff für den Nutzer
- Auf Ihrem Managed Server setzen Sie beim Endkunden unter „Verwalten“ die „Shell“ auf „/bin/bash“.
Eine Anleitung zur Einrichtung der Linux Shell auf einem Managed Server finden Sie hier.
Einrichtung WP-CLI¶
Zunächst wird die WP-CLI unter dem gewünschten Nutzer eingerichtet. Die WP-CLI ist mit PHP 5.6+ kompatibel. Da zum Zeitpunkt der Erstellung der Anleitung von WordPress PHP 8.3 unterstützt wird, verwenden wir diese Version. Sie müssen die PHP Version ggf. entsprechend anpassen. Sie können die nachfolgenden Befehle per Copy&Paste übernehmen und in Ihrem Terminal ausführen.
Erstellen des bin-Ordners im Home-Verzeichnis¶
[ -d $HOME/bin ] || mkdir $HOME/bin
Herunterladen der WP-CLI .phar Datei¶
wget -q https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O $HOME/bin/wp-cli.phar
Anlegen eines PHP Wrapper Skripts¶
[ -e $HOME/bin/php ] || cat <<EOF> $HOME/bin/php
#!/bin/bash
export PHP_BINARY=$HOME/bin/php
exec /usr/local/pd-admin2/bin/php-8.3-cli -c $HOME/php.ini "\$@"
EOF
chmod +x $HOME/bin/php
Anlegen des WP-CLI Wrapper Skripts¶
[ -e $HOME/bin/wp-cli ] || cat <<EOF> $HOME/bin/wp-cli
#!/bin/bash
exec $HOME/bin/php $HOME/bin/wp-cli.phar "\$@"
EOF
chmod +x $HOME/bin/wp-cli
Damit ist die Installation von WP-CLI bereits abgeschlossen. Wenn Sie nun
~/bin/wp-cli
ausführen, erhalten Sie eine Ausgabe an Befehlen für die Steuerung der WP-CLI. Um eine WordPress Instanz zu steuern, wechseln Sie mit „cd“ in das entsprechende Document Root Verzeichnis von WordPress. Dies ist das Verzeichnis, wo auch die wp-config.php liegt.
Praktische Befehle der WP-CLI¶
Wir haben ein paar praktische Befehle der WP-CLI zusammengetragen, welche für die Nutzung hilfreich sein können. Dabei ist zu beachten, dass die Ausführung der WP-CLI im Document Root von WordPress erfolgen muss.
Eine vollständige Liste aller Befehle finden Sie auf der offiziellen Entwicklerseite:
https://developer.wordpress.org/cli/commands/
Ein Handbuch mit weiteren Beispielen, sowie einem Troubleshooting Guide finden Sie hier:
https://make.wordpress.org/cli/handbook/
WP-CLI Version und Update¶
WP-CLI Version anzeigen:
wp-cli cli version
WP-CLI aktualisieren:
wp-cli cli update
Verwaltung von WordPress¶
Auf WordPress Updates prüfen:
wp-cli core check-update
WordPress aktualisieren:
wp-cli core update
WordPress Datenbank prüfen:
wp-cli db check
Verwaltung von Plugins¶
Installierte Plugins anzeigen:
wp-cli plugin list
Plugins aktualisieren:
# Alle Plugins aktualisieren
wp-cli plugin update --all
# Ein bestimmtes Plugin aktualisieren. Der Name kann aus der Plugin Liste entnommen werden
wp-cli plugin update <PluginName>
Plugin aktivieren/deaktivieren:
wp-cli plugin activate <PluginName>
wp-cli plugin deactivate <PluginName>
Verwalten von Themes¶
Installierte Themes anzeigen:
wp-cli theme list
Themes aktualisieren:
# Alle Theme aktualisieren
wp-cli theme update --all
# Ein bestimmtes Theme aktualisieren. Der Name kann aus der Theme Liste entnommen werden
wp-cli Theme update <ThemeName>
Themes aktivieren/deaktivieren:
wp-cli theme activate <ThemeName>
wp-cli theme deactivate <ThemeName>
Verwalten von Nutzern¶
Liste von Nutzern anzeigen:
wp-cli user list
Passwort zurücksetzen:
# Dieser Befehl zeigt das neue Passwort auf der Kommandozeile an
wp-cli user reset-password <User> --skip-email --show-password
# Mit diesem Befehl wird ein selbstgewähltes Passwort gesetzt.
wp-cli user update <User> --user-pass=<Password>
Ausführung von Cronjobs über WP-CLI¶
Standardmäßig führt WordPress seine Cronjobs aus, wenn die Webseite durch einen Nutzer oder Bot aufgerufen wird. In den Access Logs des Servers sieht man dann Zeilen wie
POST /wp-cron.php?doing_wp_cron=1763146921.6691710948944091796875
Dies kann für einfache Seiten mit wenigen Besuchern akzeptabel sein. Bei vielen Besuchern kann dies zu Problemen führen, da jeder Aufruf die Ausführung von wp-cron.php auslöst. Die Ausführung solcher Prozesse über den Webserver ist ungünstig. Wir raten dazu solche Prozesse über einen Cronjob auszuführen. Der Cronjob dazu wird über pd-admin eingerichtet.
Deaktivierung des Web-Cronjobs¶
Die Ausführung des Cronjobs bei Aufruf der WordPress Webseite wird in der wp-config.php deaktiviert. Fügen Sie dazu die Zeile
define('DISABLE_WP_CRON', true) ;
an beliebiger Stelle oberhalb der Zeile
/* That’s all, stop editing! Happy blogging. */
ein. Damit ist die Ausführung deaktiviert worden.
Skript zur Ausführung der Cronjobs per WP-CLI¶
Für die Ausführung der Cronjobs per WP-CLI erstellen wir ein Skript und legen dieses im Home-Verzeichnis des Nutzers ab. Das Skript kann zum Beispiel „wp-cron.sh“ heißen. Öffnen Sie mit einem Editor, zum Beispiel dem „vim“ Editor, die Skriptdatei:
vim $HOME/wp-cron.sh
Dort fügen Sie folgende Zeilen ein:
#!/bin/bash
cd ~/<WordPressSeite>
$HOME/bin/wp-cli cron event run --due-now
Bitte passen Sie den Pfad bei „<WordPressSeite>“ entsprechend dem Pfad Ihres WordPress Verzeichnisses an. Anschließend machen Sie das Skript ausführbar:
chmod +x $HOME/wp-cron.sh
Anlegen eines Cronjobs¶
Melden Sie sich nun in der Verwaltungsoberfläche Ihres Managed Servers an und gehen dort in den Endkundenbereich. Unter dem Abschnitt „Cronjobs“ können Sie nun folgenden Cronjob anlegen:
Min. */2
Stunde *
Tag d. Monats *
Monat *
Wochentag *
Befehl flock -n ~/wp-cron.lock -c "~/wp-cron.sh" > /dev/null
Damit wird ein Cronjob angelegt, der alle 2 Minuten ausgeführt wird. Es wird dabei das Tool „flock“ verwendet. Dieses verhindert, dass ein Cronjob versehentlich mehrfach ausgeführt wird. Die Ausgabe des Befehls wird nach /dev/null (ins Nichts) umgeleitet.