WordPress-Routinen mit WP-CLI und Shell-Skripten automatisieren
Sequenzen von WP-CLI-Befehlen lassen sich in Shell-Skripten bündeln, so dass wiederkehrende WordPress-Routinen automatisiert werden können.

Bei der täglichen Arbeit mit WordPress fallen sich wiederholende, oftmals lästige Aufgaben an. Um Zeitaufwand und Fehleranfälligkeit zu minimieren, können diese Dinge mittels WP-CLI (Command-Line Interface für WordPress) in der Kommandozeile erledigt werden. Mehre Aufgaben lassen sich in Shell-Skripten bündeln, so dass man auch aufeinander aufbauende Aufgaben mit einfachen Befehlen automatisiert durchführen kann. Das möchten wir euch beispielhaft an der Einrichtung einer neuen WordPress-Instanz zeigen.
WordPress mit WP-CLI pflegen
WP-CLI ist ein Kommandozeilenwerkzeug für WordPress. Ihr könnt damit jede administrative Aufgabe verrichten, die ihr üblicherweise im Dashboard erledigt, ohne einen Webbrowser zu verwenden. Sobald WP-CLI auf eurem Rechner installiert ist, stehen euch diverse Befehle zur Verfügung, mit denen ihr WordPress installieren, konfigurieren und aktualisieren sowie Plugins pflegen, Beiträge bearbeiten und andere wiederkehrende Aufgaben erledigen könnt.
Ob WP-CLI bei euch richtig eingerichtet ist, könnt ihr mit dem Ausführen von wp –-info
prüfen. Das Tool zeigt euch dann diverse Infos zu eurem System. Aktualisieren könnt ihr das Tool jederzeit, indem ihr ein wp cli update
ausführt.
Anhand der Einrichtung einer neuen WordPress-Instanz lässt sich das grundlegende Prinzip des Tools gut beschreiben.
Installation von WordPress mit WP-CLI
Für eine Neuinstallation muss WordPress zunächst heruntergeladen werden. Wechselt dazu im Terminal in das Verzeichnis, in dem ihr die neue Instanz einrichten wollt und ladet dann mit wp core download
die aktuelle Version herunter. Mit den Indikatoren --version
und --locale
können auch Angaben zu spezifischen Versionen und Sprachvarianten gemacht werden. Mit dieser Eingabe erhaltet ihr zum Beispiel eine deutschsprachige Installation:
wp core download --locale=de_DE
Als nächstes könnt ihr mit wp core config
erforderliche Konfigurationen vornehmen. Mit den Parametern --dbname
, --dbuser
und --dbpass
werden die unbedingt benötigten Angaben zu Datenbankname, -user und -passwort gemacht. Auch der Tabellenpräfix kann mit --dbprefix
bestimmt werden. Zusätzliche Informationen, wie etwa die Definition einer Umgebungskonstanten WP_ENVIRONMENT_TYPE
, können unter Verwendung von --extra-php
hinterlegt werden. Dieses Kommando erzeugt die Datei wp-config.php
und füllt diese mit euren Angaben:
wp core config --dbname=datenbank --dbprefix=pre_ --dbuser=kulturbanause --dbpass=passwort --extra-php="define('WP_ENVIRONMENT_TYPE', 'local');"
Im nächsten Schritt erstellt ihr die benötigte Datenbank:
wp db create
Anschließend könnt ihr mit wp core install
die eigentliche Installation anstoßen. Mit den Parametern --url
und --title
wird dabei Adresse und Titel der Website bestimmt. Angaben zum Administrator erfolgen mit --admin_user
, --admin_password
und --admin_email
. Mit diesem Befehl wird WordPress eingerichtet und die Installation abgeschlossen:
wp core install --url=https://kulturbanuse.kb --title="WordPress mit WP-CLI" --admin_user=kulturbanause --admin_password=passwort --admin_email=test@domain.de
Nach Abschluss der Installation meldet WP-CLI Success: WordPress installed successfully
. Die neue WP-Instanz ist dann unter der konfigurierten Adresse erreichbar.
Shell-Skript für die Einrichtung einer neuen WordPress-Instanz
Um Prozesse zu vereinfachen, die eine Abfolge von mehreren Befehlen in der Kommandozeile benötigen, können Shell-Skripte sehr hilfreich sein. In diesen können ganze Befehlssequenzen zusammengefasst werden, so dass die Eingabe eines einzigen Kommandos (typischweise der Dateiname) eine ganze Befehlsfolge einleitet.
Auf diese Weise lassen sich die oben beschriebenen Kommandos bündeln, so dass wir die berühmte 5-Minuten-Installation von WordPress z. Bsp. mit dem Befehl wpinstall
verfügbar machen können. Dazu erstellt ihr eine Datei wpinstall
und schreibt #!/bin/bash
in Zeile 1. In den folgende Zeilen könnt ihr dann die benötigten WP-CLI-Kommandos eintragen. Das einfache Skript sieht dann so aus:
#!/bin/bash
wp core download --locale=de_DE
wp core config --dbname=datenbank --dbprefix=pre_ --dbuser=kulturbanause --dbpass=passwort --extra-php="define('WP_ENVIRONMENT_TYPE', 'local');"
wp db create
wp core install --url=https://kulturbanuse.kb --title="WordPress mit WP-CLI" --admin_user=kulturbanause --admin_password=passwort --admin_email=test@domain.de
In der Kommandozeile könnt ihr dann den Befehl wpinstall
benutzen.
Achtung! Die Skript-Datei muss unbedingt ausführbar und in einem Verzeichnis hinterlegt sein, auf das die von euch benutzte Shell Zugriff hat!
Durch die fest eingetragenen Angaben für Datenbank und Website ist das Skript so aber nicht sehr brauchbar. Universell einsetzbar wird das Ganze erst, wenn ihr interaktive Abfragen für die flexiblen Angaben, wie Website-Titel und -Host sowie Datenbank-Name und -Präfix, integriert:
#!/bin/bash
# Setup an new WP instance
echo "Start WordPress setup …"
# Get setup infos
read -p "Website title: " WP_TITLE
read -p "Website host: " WP_HOST
read -p "Database name: " DB_NAME
read -p "Database prefix: " DB_PREFIX
# Run the installation
wp core download --locale=de_DE
wp core config --dbname="$DB_NAME" --dbprefix="$DB_PREFIX" --dbuser=kulturbanause --dbpass=passwort --extra-php="define('WP_ENVIRONMENT_TYPE', 'local');"
wp db create
wp core install --url="https://${WP_HOST}" --title="${WP_TITLE}" --admin_user=kulturbanause --admin_password=passwort --admin_email=test@domain.de
Einen echten Mehrwert könnt ihr erzielen, wenn ihr dann noch zusätzliche Aufgaben automatisiert. So könnt ihr z. Bsp. alle Posts, Pages, Plugins und inaktiven Themes löschen, die WordPress standardmäßig mitbringt oder die Permalink-Struktur in eine gewünschte Form bringen.
COD#!/bin/bash
# Setup an new WP instance
echo "Start WordPress setup …"
# Get setup infos
read -p "Website title: " WP_TITLE
read -p "Website host: " WP_HOST
read -p "Database name: " DB_NAME
read -p "Database prefix: " DB_PREFIX
# Run the installation
wp core download --locale=de_DE
wp core config --dbname="$DB_NAME" --dbprefix="$DB_PREFIX" --dbuser=dbadmin --dbpass=dbpw --extra-php="define( 'WP_ENVIRONMENT_TYPE', 'local' );"
wp db create
wp core install --url="https://${WP_HOST}" --title="${WP_TITLE}" --admin_user=kulturbanause --admin_password=passwort --admin_email=test@domain.de
# Remove posts, pages, plugins and inactive themes
wp theme delete $(wp theme list --status=inactive --field=name)
wp plugin delete --all
wp post delete $(wp post list --post_type='page' --format=ids) --force
wp post delete $(wp post list --post_type='post' --format=ids) --force
# Rewrite permalink structure
wp rewrite structure '/%postname%/' --hard
wp rewrite flush --hard
Das Skript lässt sich beliebig abändern und erweitern, so dass ihr euch damit euren idealen Installations-Prozess für WordPress erstellen könnt.