Von WordPress zu Hugo Teil 1: Ausgangslage

22. Januar 2023 · Intern · andreas · Kein Kommentar

Im Laufe der rund 25 Jahre, die ich im World Wide Web aktiv bin, wurden verschiedene Systeme zum Verwalten und zur Anzeige meiner Webpräsenzen eingesetzt:

Allererste Gehversuche wurden anfangs mit “handgemachtem HTML” unter der Domain “shadowfire.de” mit dem Editor HTML-Editor Phase 5 durchgeführt, bevor unter dem klangvollen Namen “shadowCMS” ein selbstentwickeltes Content Management System auf Perl-Basis in Betrieb genommen wurde. Auf Dauer war das direkte Erstellen und Bearbeiten von Beiträgen in der Datenbank aber mehr als lästig (und ich fand nie die Motivation, ein brauchbares Backend zu entwickeln) und so sah Joomla! nach einem vielversprechenden Ersatz aus.

Jahre später erfolgte dann die Umstellung von einer klassischen Website in ein Blog. Hier gab es ein kurzes Kopf-an-Kopf-Rennen zwischen Serendipity und WordPress, welches letztendlich von WordPress für sich entschieden wurde. Mit dieser Umstellung wurde ein Großteil der vorhandenen Beiträge in Form eines Blogs serialisiert und es änderten sich zum bisher letzten Mal die nach außen verwendeten URLs.

Im Laufe der letzten Jahre haben sich meine Bedürfnisse und WordPress immer mehr auseinanderentwickelt, weshalb nach reiflicher Überlegung und Sichtung einiger Alternativen die Migtation auf Hugo anstand. Inhalte, URLs und Blog-Struktur sollten hierbei bis auf einige wenige Korrekturen übernommen werden.

WordPress in Hugo

Zum Zeitpunkt der Umstellung war das Blog auf 1.069 Artikel (1.065 Beiträge und 4 Seiten) und 739 Kommentare angewachsen, die alle zur Übernahme anstanden. Gleichzeitig mit der Umstellung sollte auch das 3.192 Dateien umfassende “Uploads”-Verzeichnis aufgeteilt und die zu einem Beitrag gehörenden Medien zusammen mit dem jeweiligen Beitrag in einem Ordner abgelegt werden.

Auf der Hugo-Website werden einige Migrationswerkzeuge gelistet, die aber alle das geplante Einsatzszenario nicht vollständig abdecken konnten. Auch die Idee, mittels z.B. “wget” ein Abbild der fertig gerenderten Website zu erzeugen und weiterzuverarbeiten, wurde als unpraktikabel verworfen.

Als effektivster Weg blieb das Auslesen der Beitragsinhalte und Kommentare direkt aus der WordPress-Datenbank. Dabei sollte auf jeden Fall ein Teil der WordPress-Ausgabefunktionalität wie z.B. wpautop() erhalten bleiben, so daß die einzelnen Beiträge im HTML-Format abgelegt identisch mit den von WordPress dargestellten Beiträgen sein sollten. Weiterhin sollten auch Sonderfälle wie z.B. die Bildergalerien berücksichtigt werden, welche mittels Resources-Einträgen und einem Gallery-Shortcode von Hugo neu erstellt werden sollten.

Deutlich erleichtert wurde die Umsetzung dadurch, daß in meiner WordPress-Instanz keinerlei fremde Plugins aktiv waren und auch die Struktur der Artikel (jeder Beitrag in exakt einer Kategorie, aber dafür mit beliebig vielen Tags versehen) den Export und die Ablage im Dateisystem deutlich erleichterte.

Ebenfalls nervenschonend war die Tatsache, daß nach einem kurzen Ausflug zur 5.x-Schiene WordPress wieder in der Version 4.19.x aktiv war und somit beim Umsetzen der Beiträge nicht auf neuere Gutenberg-Funktionalitäten und -Besonderheiten Rücksicht genommen werden musste.