Wer mehrere WordPress-Installationen oder eine Multisite betreibt, kennt das Problem: Welche Plugins sind auf welcher Website aktiv? Welches Theme wird verwendet – und in welcher Version?
Mit WP-CLI lässt sich diese Bestandsaufnahme sehr einfach automatisieren. Noch praktischer wird es, wenn das Ergebnis direkt als DokuWiki-Syntax ausgegeben wird. So entsteht aus der laufenden WordPress-Installation eine aktuelle technische Dokumentation, die sich ohne Nachbearbeitung ins Wiki übernehmen lässt.
Die Idee
WP-CLI kann Plugins, Themes und Sites einer Multisite auflisten. Ein kleines Shell-Skript iteriert über alle Websites und erzeugt daraus Tabellen im DokuWiki-Format.
#!/bin/bash
WP=/usr/local/bin/wp
PHP=php8.0
echo "====== WordPress-Sites – Plugins und Themes ======"
echo
echo "Diese Seite wurde automatisch aus der WordPress-Multisite-Konfiguration erzeugt."
echo
while read -r url; do
site="${url#http://}"
site="${site#https://}"
site="${site%/}"
echo "===== $site ====="
echo
echo "**URL:** [[$url|$url]]"
echo
echo "==== Aktive Plugins ===="
echo
echo "^ Plugin ^ Version ^"
"$PHP" "$WP" plugin list \
--url="$url" \
--status=active \
--skip-plugins \
--skip-themes \
--fields=name,version \
--format=csv |
tail -n +2 |
while IFS=',' read -r name version; do
name="${name%\"}"
name="${name#\"}"
version="${version%\"}"
version="${version#\"}"
echo "| ''$name'' | $version |"
done
echo
echo "==== Aktives Theme ===="
echo
echo "^ Theme ^ Version ^"
"$PHP" "$WP" theme list \
--url="$url" \
--status=active \
--skip-plugins \
--skip-themes \
--fields=name,version \
--format=csv |
tail -n +2 |
while IFS=',' read -r name version; do
name="${name%\"}"
name="${name#\"}"
version="${version%\"}"
version="${version#\"}"
echo "| ''$name'' | $version |"
done
echo
echo
done < <(
"$PHP" "$WP" site list \
--field=url \
--skip-plugins \
--skip-themes
)
Das Ergebnis kann direkt in eine Datei geschrieben werden:
./wordpress-dokuwiki.sh > wordpress-sites.txt
Beispiel der erzeugten Dokumentation
Für eine WordPress-Installation könnte die erzeugte DokuWiki-Seite beispielsweise so aussehen:
===== site-a.example.org =====
**URL:** [[https://site-a.example.org/|https://site-a.example.org/]]
==== Aktive Plugins ====
^ Plugin ^ Version ^
| ''plugin-a'' | 2.4.1 |
| ''plugin-b'' | 1.8.0 |
| ''plugin-c'' | 6.1.2 |
| ''cache-plugin'' | 3.0.0 |
==== Aktives Theme ====
^ Theme ^ Version ^
| ''example-theme'' | 2.1.0 |
Im DokuWiki entsteht daraus eine übersichtliche Seite mit einer eigenen Sektion pro Website sowie Tabellen für Plugins und Theme.
Warum das praktisch ist
Der große Vorteil ist, dass Dokumentation und tatsächlicher Systemzustand nicht getrennt gepflegt werden müssen. Die Informationen kommen direkt aus WordPress.
Das Skript kann bei Bedarf manuell ausgeführt oder regelmäßig per Cronjob gestartet werden. Dadurch eignet sich der Ansatz besonders gut für Server mit mehreren WordPress-Websites oder Multisite-Installationen.
Später lässt sich der Generator noch erweitern, zum Beispiel um die WordPress-Core-Version, die PHP-Version, das Erstellungsdatum oder eine kompakte Übersicht aller Sites.