Das Updaten von PlugIns und Themes ist finde ich immer ein leidiges Thema, insbesondere wenn man sehr viele Seiten verwaltet, auch wenn es nur Test und Stagingseiten sind.
Dieser Tipp richtet sich also nicht an WordPress Nutzer, die ein oder zwei Seiten verwalten, sondern eher 20 oder mehr und diese u.U. noch auf diverse Hosting Accounts verteilt.
Natürlich kann man inzwischen bei vielen PlugIns die automatische Aktualisierung einstellen, aber leider nicht bei allen.
Zudem bieten sich Tools wie MainWP an, mit denen man komfortabel viele Seiten über eine zentrale Oberfläche verwalten kann.
Ich fand aber auch das immer sehr mühsam, gerade wenn es um Staging- oder Testseiten geht, deren Aktualisierung keine große Aufmerksamkeit erfordert, aber aus Sicherheitsgründen trotzdem erforderlich ist.
Lösung per WP-CLI und Cron Job
WP-CLI ist eine schnelle Möglichkeit bestimmte Aktionen in WordPress auszuführen. Das kann die Installation von WordPress sein, aber auch z.B. das Update aller Plugins oder Themes. Ggf. muss WP-CLI beim Hoister gesondert installiert werden. Mein Hoster Hetzner bietet dafür einen Installationsbefehl an.
Mit Befehlen wie wp theme update –all und wp plugin update –all habe ich dann per SSH meine Installationen geupdatet. Aber auch das zieht sich hin, da man immer wieder manuell in die Verzeichnisse der Installationen wechsel muss.
Manuelle Lösung per Script
Im ersten Schritt habe ich mir dann dieses Script erstellt, dass automatisch alle WordPress Installationen eines Accounts aufruft und dort die WP-CLI Befehle automatisch ausführt.
!/bin/bash
cd public\_html`
`
`# Führe eine Schleife über alle Unterverzeichnisse aus`
for dir in \*/; do
if [ -f "$dir/wp-config.php" ]; then
echo "=================================================="
echo "Starte Updates für: $dir"
echo "=================================================="
cd "$dir"
# WP-CLI-Befehle
wp theme update --all --quiet
wp plugin update --all --quiet
echo "Fertig: $dir"
cd ..
fi
done
echo "Alle WP-Installationen wurden überprüft."
Das war schon mal eine enorme Zeitersparnis.
Automatisierung per Cron Job
Im zweiten Schritt habe ich das Script modifiziert, sodass es auch per Cron Job täglich einmal ausgeführt wird.
!/bin/bash
# Das Shebang muss die allererste Zeile sein
# Setze den ABSOLUTEN PFAD zum Verzeichnis, das alle WP-Installationen enthält
# PASSE DIESEN PFAD UNBEDINGT AN DEINE SERVERSTRUKTUR AN!
BASE\_DIR="Pfad eintragen" # BEISPIEL: Ersetze dies durch Ihren tatsächlichen Pfad
# Setze den ABSOLUTEN PFAD zur WP-CLI-Ausführungsdatei
# Dies ist notwendig, da Cron in einer minimalen Umgebung läuft und den Pfad zu 'wp' nicht kennt
WP\_CLI\_PATH="Pfad zu wp-cli" # BEISPIEL: Überprüfe den tatsächlichen Pfad
# Wechsel in das übergeordnete Verzeichnis (mit absolutem Pfad)
cd "$BASE\_DIR"
# Führe eine Schleife über alle Unterverzeichnisse aus
for dir in \*/; do
# Überprüfen, ob wp-config.php existiert (bestätigt WP-Installation)
if [ -f "$dir/wp-config.php" ]; then
echo "=================================================="
echo "Starte Updates für: $dir"
echo "=================================================="
cd "$dir"
# WP-CLI-Befehle mit ABSOLUTEM PFAD
"$WP_CLI_PATH" theme update --all --quiet
"$WP_CLI_PATH" plugin update --all --quiet
echo "Fertig: $dir"
cd .. # Zurück in den BASE_DIR wechseln
fi
done
echo "Alle WP-Installationen wurden überprüft."
Sicher gibt es noch bessere Lösungen, aber diese funktioniert bei mir. Trotzdem übernehme ich keine Gewähr und jeder nutzt die Scripte auf eigene Gefahr.

