Disclaimer: Ich empfehle im Blog selten kostenpflichtige Plugins. In diesem Fall bin ich vom Produkt aber überzeugt, deswegen sei diese Werbung für das Plugin erlaubt. Es befinden sich keine Affiliate-Links in diesem Beitrag.
Wir ziehen häufiger Websites um: auf einen anderen Server, zu einem anderen Hoster, aus der Test- oder Relaunch-Umgebung in die Live-Umgebung. Dabei kann es auch vorkommen, dass eine ganz besondere Anforderung gestellt wird: das Herauslösen einer einzelnen Website aus einer Multisite oder das Hinzufügen einer einzelnen Website zu einer Multisite. Beides ist, gelinde gesagt, eine Horrorvorstellung, müsste man diese Aufgaben per Hand durchführen. Glücklicherweise habe ich vor einiger Zeit ein Plugin gefunden, was diese Arbeit bislang für mich mit überraschender Präzision ausgeführt hat. Weder beim Herauslösen noch beim Einfügen einer Seite aus/in eine Multisite hatte ich bislang irgendwelche Schwierigkeiten.
Was ist eine Multisite?
Eine Multisite ist eine besondere Spielart einer WordPress-Installation. Normalerweise installiert man WordPress und nutzt es für die Darstellung und Gestaltung einer Website (unter einer Domain). Mit einer Multisite-Installation kann man aber dieselbe Basis-Installation für mehrere Websites gleichzeitig nutzen. Auf Basis derselben Datenbank und derselben Dateien können Websites zum Beispiel über domain.de/seite1 und domain.de/seite2 aber auch über seite1.domain.de und seite2.domain.de erreichbar sein. Sogar ein Domain-Mapping ist möglich, so dass die gleiche Installation auch die Websites domain1.de, domain2.de usw. betreiben kann.
Das ist immer dann hilfreich, wenn die einzelnen Seiten sich ähneln, zum Beispiel dasselbe Theme oder weitestgehend dieselben Plugins nutzen oder die Benutzer weitestgehend identisch sind. Trotzdem können in einer Multisite die einzelnen Websites auch jeweils andere Themes und Plugins nutzen oder eigene Benutzer haben. Denn die Seiten sind logisch komplett getrennt, auch die Medien-Dateien und Inhalte teilen sich die Websites erstmal nicht.
Mehr zu Multisite-Installationen findet man zum Beispiel hier.
Was ist das Problem beim Auftrennen einer Multisite oder Integrieren einer neuen Einzelsite?
Damit eine Multisite das tut, was sie soll, nämlich verschiedene inhaltlich getrennte Websites in einer Installation verwalten, sind ein paar Besonderheiten in der Datenhaltung notwendig.
Jede Website innerhalb der Multisite hat eine eigene ID zugeordnet. Über die Netzwerkverwaltung in der Multisite können diese Websites angelegt oder gelöscht werden.
Neben einigen zentrale WordPress-Datenbanktabellen gibt es dann für jede einzelne Website eigene DB-Tabellen, die in ihrem Namen die oben genannte Site-ID enthalten. Zudem finden sich im Uploads-Ordner entsprechende Unterverzeichnisse, in denen die hochgeladenen Dateien der einzelnen Websites gespeichert werden.
Möchte man nun eine Website aus der Multisite herauslösen und als eigenständige (nicht-multisite) Installation fortführen, hat man das Problem, dass die zugehörigen DB-Tabellen „falsch“ benannt sind (nämlich die Site-ID noch enthalten) und die Uploads im „falschen“ Ordner liegen. Ein einfaches Kopieren dieser Website-Teile ist also nicht möglich. Auch die Verweise auf hochgeladene Dateien (zum Beispiel für Bilder im Seiteninhalt) zeigen dann weiterhin auf das „falsche“ Verzeichnis (mit Seite-ID im Namen). Hier wäre also viel Handarbeit gefragt.
Möchte man umgekehrt eine bestehende Einzelinstallation als weitere Seite in eine Multisite integrieren, hat man das umgekehrte Problem: die Inhalte liegen ohne eine entsprechende Site-ID vor (Datei-Zuordnung, Datenbank-Tabellen) und müssten auf diese Form umgeändert werden.
Das ist natürlich beides vorstellbar und auch manuell möglich, erfordert aber einiges an Aufwand und ist fehleranfällig. Schön, dass es dafür Lösungen gibt, die einem die Arbeit weitestgehend abnehmen.
Das von mir favorisierte Plugin „All-in-One WP Migration“ ist da übrigens nicht die einzige Lösung. Auch das bekannte Duplicator-Plugin hat in seiner Pro-Version eine solche Funktion und auch „WP Migrate DB Pro“ bietet „Multisite-Tools“ an.
All-in-One WP Migration: Plugin-Verwendung
Das Basis-Plugin von All-in-One WP Migration ist kostenlos und im WordPress-Repository zu finden.
Wie die anderen oben genannten Plugins, ist es hauptsächlich ein Backup-Plugin mit Klon- und Migrationsfunktion und als solches auch im Repo zu finden. Die für mich spannenden Multisite-Funktionen bietet diese Basis-Version nicht, dafür muss ein kostenpflichtiges Add-On installiert werden. Erst dann kann das Plugin mit Multisites im generellen umgehen.
Auch ansonsten hat die kostenlose Version ein paar Limitierungen. So sind zwar Backups/Exporte jeder Größe möglich, ein Import ist jedoch nur bis zu 500MB Größe möglich. Um größere Backups zu importieren, ist ein weiteres Add-On nötig. Es gibt hierfür keine einheitliche Pro-Version, sondern man erwirbt ein Add-On, mit dem man größere Dateien bereitstellen kann, zum Beispiel:
- FTP-Add-On: Bereitstellen des Backups mit FTP-Zugangsdaten
- URL-Add-On: Bereitstellen des Backups von einer beliebigen URL
- Unlimited Extension: beliebige Datei-Importe (direkt via Upload oder in der eigenen Installation) auch über 500MB
- diverse Cloud-Dienst-Add-Ons
(Eine Übersicht aller Extensions gibt es hier)
Ich habe mich mal für das URL-Add-On entschieden, damit ich das Backup flexibel von jedem Ort aus importieren kann.
Nach diesem Vorgeplänkel könnte nun eine langwierige Beschreibung des Import/Export-Vorgangs folgen. Allerdings fällt dieser Teil nun eher kurz aus, denn das weitere Vorgehen ist eher einfach.
Erster Schritt: die gewünschte Seite exportieren
Mit dem Plugin kann nun ein Backup der gewünschten Seite erstellt werden. Das kann entweder die einzelne Site der Multisite sein oder die Einzelinstallation. Das Plugin sichert das Backup im eigenen „WPRESS“-Archivformat (Vergleich WPRESS / ZIP, Github-Projekt zum WPRESS-Format).
Schon diese Sicherung ist auf Cloud-Speicher oder FTP-Ziele möglich, dafür muss aber die jeweilige Erweiterung erworben werden. Ohne Erweiterung sichert das Plugin das Backup lokal in das WordPress-Verzeichnis. Das Backup kann von dort aber beliebig auf das gewünschte Ziel verschoben werden.
Zweiter Schritt: Einspielen des Backups
Bei der Integration in eine bestehende Multisite muss nun nur das Backup in die Multisite importiert werden. Alle Anpassungen übernimmt das Plugin hier automatisch selbst.
Löst man eine Site aus einer Multisite heraus, muss man jedoch leider noch einen Umweg einschlagen. Im Gegensatz zu Lösungen wie Duplicator und Co. bietet All-in-one WP Migration kein einzelnes Script zur Verarbeitung des Backups an, so dass am Zielort zuerst eine leere WordPress-Installation erstellt werden muss inkl. Installation des AIOWPM-Plugins (und den notwendigen Add-Ons). Erst dann kann ein Import der WPRESS-Datei erfolgen, auch wenn dieser Import dann quasi die komplette bislang existierende Installation wieder überschreibt.
Dritter Schritt: gibts nicht.
Mehr ist nicht zu tun. Möglicherweise möchte man jetzt nur noch Aufräumen, AIOWPM und Add-Ons wieder löschen, aber alle anderen Arbeiten hat das Plugin bereits erledigt.
Noch ein Hinweis, falls beim Umzug auch die URL geändert werden soll: im Gegensatz zu anderen Plugins, die die DB-Anpassung der URLs beim Import des Backups vornehmen, muss man bei AIOWPM die Ersetzungen in der Datenbank per Hand schon beim Export definieren oder im Anschluss nach dem Import selbst mit anderen Lösungen durchführen (zum Beispiel Plugins wie Better Search Replace).
Fazit
Es gibt viele Backup-Plugins, aber auch viele Plugins für die Migration von Seiten, allen voran Duplicator als bekanntestes Beispiel. Im Spezialbereich des Importieren oder Exportieren von Multisite-Websites wird regelmäßig eine kostenpflichtige Lösung benötigt. Auch hier gibt es verschiedene Lösungen. Mich hat All-in-One WP Migration dabei sehr überzeugt. Die Add-Ons sind nicht gerade kostengünstig, aus meiner Sicht ihr Geld wert. Scheinbar hat der Anbieter in letzter Zeit aber sein Lizenzmodell geändert, so dass zu den einmaligen Kosten nun noch regelmäßige Kosten hinzukommen. Für eine einmalige Migration scheint es mir dadurch doch etwas kostenintensiv zu sein. Wenn man jedoch als Agentur dauerhaft eine solche Lösung benutzen kann und muss, macht es trotzdem weiterhin Sinn.
Ich habe letzten auch mehrere Singe WordPress Seiten zu einer Multisite zusammengefasst. Nachdem ich per Hand grandios gescheiter bin, habe ich das WP CLI Plugin https://github.com/10up/MU-Migration ausprobiert und es lief echt reibungslos. Innerhalb von wenigen Minuten war alles erledigt. Bedingung ist halt, dass man Zugriff auf die CLI hat.
Nur Bilder haben ich aufgrund des Umfangs per rsync kopiert.