Von Multisites zu Multi-Networks

Seit einiger Zeit interessiert mich ein [verstecktes] Feature von WordPress: Multi-Networks mit nur einer Installation. Meine Begeisterung habe ich gut verpackt beim WordCamp Turin 2023 eingereicht und bin damit auch auf Interesse gestoßen. Ich werde also Mitte April dort einen Vortrag halten, bei dem ich darauf eingehe, welche Möglichkeiten so eine Installation bietet. Der Artikel hier ist Teil meiner Vorbereitung auf die Veranstaltung.

Was ist eine WordPress Multisite?

Bevor ich mich an die Ausführungen zu den Multi-Networks wage, will ich erst einmal klären, was eine Multisite ist. WordPress ist in der Lage, ein Network von mehreren Websites/Blogs mit nur einer Installation zu verwalten. Es ist möglich, diesen Websites einen oder mehrere Site-Admins zuzuweisen. Das Netzwerk wiederum wird von einem oder mehreren Network-Admins verwaltet. Ein Kontoinhaber kann auch Site-Admin und Network-Admin sein.

Ein warnender Hinweise vorweg: Die Einrichtung einer Multisite ist kein trivialer Vorgang. Ein sicherer Umgang beim Bearbeiten der Konfigurationsdateien wird vorausgesetzt, ein aktuelles Backup der Dateien und der Datenbank sowieso!

Zwei verschiedene Arten von Multisites

In jedem Fall darf man sich bereits vor dem Einrichten darüber Gedanken machen, welche der beiden möglichen Arten von Multisites zum Einsatz kommen soll: Sollen die Websites über von einander unabhängige Domains angesteuert werden können oder sollen sie über Unterverzeichnisse erreichbar sein. Beide Möglichkeiten haben – auch abhängig vom Zweck und Geschmack – durchaus ihre Berechtigung, sowie ihre Vor- und Nachteile.

Verschiedene Arten von Multisites

Erste Stolpersteine in dieser Phase

Will man eine schon länger bestehende Installation zu einer Multisite umformen, wird WordPress – um eventuelle Kollisionen mit den Namen der Unterverzeichnisse zu vermeiden – nur die Möglichkeit mit Subdomains anbieten. Allerdings lässt sich das nach der ersten Einrichtung wieder ändern, indem man die Konfiguration entsprechend anpasst.

Anwendungsfall für Multisites par excellence

Mehrsprachige Websites sind ein großartiger Anwendungsfall für Multisites. So lassen sich entweder Subdomains oder Unterverzeichnisse einrichten, die für die jeweilige Sprache konfiguriert sind. WordPress hat diese Option bereits standardmäßig eingebaut. Um dann die Inhalte bzw. Übersetzungen der verschiedenen Websites miteinander zu verbinden, kann auf ein Plugin – wie zum Beispiel dem Multisite Language Switcher – zurückgegriffen werden.

WordPress mehrsprachig

Subdomains mit einem „Aber“

Vor dem Erscheinen von WordPress 4.5 musste man noch auf ein Plugin zurückgreifen, um Domains auf Subdomains zu mappen und festzulegen, dass de.example.org zum Beispiel automatisch auf example.de umleitet. Das Mappen der Domains ist inzwischen eine native Funktionalität von WordPress; Subdomains werden von Kunden, die mehrsprachigen Websites betreiben wollen – zumindest meiner Erfahrung nach – aber eher abgelehnt.

Kunden mögen Unterverzeichnisse

Die meisten Kunden „wählen“ in dieser Phase der Planung lieber die Variante mit den Unterverzeichnissen. Meist aus ästhetischen, manchmal aus anderen Gründen, die nicht unbedingt stimmig sein müssen. Spontan fallen mir hier alle möglichen Diskussionen zum Thema SEO usw. ein. Der problematische Teil für Agenturen oder Anbietern von SaaS-Lösungen beginnt aber, wenn es um die effiziente Skalierung einer grösseren Anzahl von WordPress-Installation geht.

Kunden mögen Multisites mit Unterverzeichnissen

Hier helfen Multi-Networks

Und genau hier reihen sich für mich Multi-Networks ein. Mit Hilfe dieser Funktionalität kann ich Websites von Kunden kompromisslos in einer einzigen Installation verwalten. Der Aufwand für die Verwaltung ist also um einiges geringer. Die Kosten sind ebenfalls deutlich reduziert. Cluster-Konfigurationen, wo die Installationen jeweils mit einem oder mehreren Pods bereitgestellt werden, sollten noch deutlich mehr davon profitieren können.

Hier helfen Multi-Networks

Ein kurzer Blick auf wp_blogs

Schaut man etwas genauer auf die Datenbank-Tabellen, welche generiert werden, sobald man eine einfache WordPress-Installation in eine Multisite umgeformt hat, fällt vermutlich sofort wp_blogs auf. Die Spalten blog_id und site_id sind aus historischen Gründen etwas irreführend. blog_id ist eine fortlaufende und exklusive Nummer für jede Website, welche im Network (site_id) angelegt wurden. Diese Nummer bleibt bei klassischen Multisites immer gleich (und unsichtbar im Hintergrund).

Datenbank Tablle wp_blogs

Aparecium!

Um die Tabellen-Spalte site_id sichtbar zu machen und WordPress mit der für unseren Zweck notwendigen Funktionalität auszustatten, braucht es keinen Zauberspruch wie bei Harry Potter. Vielmehr hilft an dessen Stelle die Installation des Plugins WP Multi Network. Die Dokumentation ist für erfahrene Anwender ausreichend. Für Anfänger ist die Eingangshürde aber – meiner Meinung nach und vielleicht auch verständlicherweise (noch) – zu hoch.

Multi-Networks in realen Projekten

Ist das Plugin aktiviert und eingerichtet, werden – zusätzlich zur Ansicht „My Sites“ mit den eingerichteten Sites/Blogs – die Ansichten „My Networks“ und „Edit Network“ zugänglich. An dieser Stelle sieht man bereits wie mächtig diese Erweiterung ist. Bei der täglichen Arbeit mit so einer Installation kommen noch weitere Eigenschaften zutage, die durchaus ihren Charme haben; Stichwort: Netzwerkweite Aktivierung von Plugins usw.

Was sonst noch zu sagen ist

Die Konfiguration auf DNS-Ebene habe ich komplett zu Cloudflare ausgelagert. Wo in der Vergangenheit das weiter oben bereits erwähnte MU Domain Mapping Plugin zum Einsatz kam, bestimmen nun Regeln über die Weiterleitung von Domains, bevor der Traffic beim Server überhaupt ankommt. Bereits mit dem Paket „Free“ bekommt man bei Cloudflare genug Werkzeuge an die Hand, um die wichtigsten Dinge sehr effizient zu erledigen:

  • Weiterleitung von Subdomains auf die Hauptdomain
    Beispiel: www.msls.co -> msls.co
  • Umleitung des gesamten Traffics einer Domain
    Beispiel: lloc.de/(.*) -> ploetner.io/de/$1
  • den kompletten Traffic von http auf https umleiten/erzwingen

Ich habe zudem auch die SSL-Zertifikate mit Cloudflare erzeugt. Neben der Langlebigkeit dieser Zertifikate, arbeiten einige der durch den Service angebotenen Optionen noch besser miteinander. Spätestens an dieser Stelle wird aber klar, dass man sich entweder selbst sicher durch die Konfigurationsdateien eines Servers bewegen kann oder doch besser auf die Hilfe eines Profis zurückgreifen möchte.

Mich würde Deine Meinung zu diesem Thema interessieren. Sind Multi-Networks interessant? Oder ist das eher kein Anwendungsfall für Dich? Habe ich etwas vergessen, sollte das eine oder andere hier noch weiter ausgeführt werden sollte?

3 Gedanken zu „Von Multisites zu Multi-Networks“

  1. Hi Dennis,

    Ich probiere gerade Dein PlugIn it WP 6.2.2 aus. ich habe dazu ein paar Fragen und würde mich freuen, wenn Du die beantworten könntest.

    1. Es scheint mit dieser Version noch nicht richtig zu funktionieren. Es erscheint immer die Meldung „This block has encountered an error and cannot be previewed.“. Daraus resultiert wahrscheinlich auch die manchmal etwas chaotische Anzeige. Gibt es dazu Erkenntnisse?

    2. Ist es möglich, die Anzeige zu modifizieren, ohne den Sourcecode zu ändern? Zum Beispiel hätte ich gerne etwas Abstand zwischen den Sprachen. Auch wäre ein Drop-Down-Menü mit Shortcode hilfreich.

    Herzlichen Dank
    Thomas

  2. Hallo Dennis,
    ich habe eine Polylang Seite vom Typ meinedomain.it/de /it /en und so weiter und ich möchte das in verschiedene Domains splitten, z.B. /de wird meinedomain.it/, /it wird miodominio.org, /en wird mydomain.net und so weiter. Wenn ich es richtig verstehe, benötigt es neben Multisite Language Switcher das Plugin MU Domain Mapping, das seit 7 Jahren kein Update hatte.
    Ich bin nicht in der Lage zu bewerten, ob eine solche Installation eine dauerhafte Zukunft hat. Außerdem würde ich Unterstützung benötigen bei der Realisierung einer solchen Installation.
    Kannst du mir bitte Tipps und Vorschläge geben, wie ich weiter vorgehen könnte. Vielen Dank

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert