WordPress-Dokumentation automatisch mit WP-CLI für DokuWiki erzeugen   Vor kurzem aktualisiert!


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.