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:

../../../_images/00-cron-config.png
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.