Wie wir zwei WordPress-Websites fusionieren

Es ist möglich, die Inhalte eines Blogs in ein anderes zu überführen. Damit eine solche Aktion ein Happy-End hat, müssen wir alle Fussangeln kennen – und wo die liegen, habe ich am eigenen Leib erfahren.

Neulich habe ich mein Zweitblog abgeschaltet und die Inhalte hier ins Hauptblog überführt – die Hintergründe, die mich dazu bewogen haben, beschreibe ich im Beitrag Goodbye, Deutschland!

Was den technischen Vorgang angeht, spielt es keine Rolle, ob wir das Fusion oder friendly takeover nennen wollen. Entscheidend ist hingegen, auf einige Stolpersteine zu achten. Denn sonst sind am Ende womöglich beide Websites hinüber.

Also, der Reihe nach:

1) Vorbereitungen treffen

Als erstes sollten die beiden Websites für die Fusion vorbereitet werden. Zu diesem Zweck lösche ich die Beiträge auf der zu importierenden Website, die auf der Ziel-Website nicht erscheinen sollen. Eine gute Lösugn ist auch, sie auf Privat stellen – dann sind sie zu dokumentarischen Zwecken noch vorhanden, werden aber nicht mehr öffentlich angezeigt. Diese Änderung nehmen wir in der Beitrag bearbeiten-Ansicht von WordPress im Abschnitt Veröffentlichen bei Sichtbarkeit vor.

Ausserdem empfehle ich, die Kategorien und Schlagwörter zu harmonisieren: Wir sollten sicherstellen, dass die gleichen Begriffe verwendet werden, und zwar überall mit der gleichen Rechtschreibung. Wir können das auch zum Anlass nehmen, die Kategorien zu konsolidieren und Schlagwörter, die nur für wenige Beiträge benutzt worden sind, zu löschen.

Und ein heisser Tipp: Es ist sinnvoll, alle Beiträge der zu importierenden Website mit einem entsprechenden Schlagwort auszustatten: Auf diese Weise sind sie für die Kontrolle und Korrektur leicht aufzufinden.

Dieses Schlüsselwort kann nach vollendeter Fusion gelöscht werden. Ich habe es für meine Website MrClicko.de jedoch stehen lassen.

2) Eine Datensicherung beider Websites anfertigen

Das versteht sich von selbst: Wie immer vor grösseren Eingriffen muss eine Datensicherung her. Damit ersparen wir uns viel Ärger und Nachtarbeit, falls eine Panne auftritt, die manuell repariert werden muss.

Im Beitrag Gerüstet für den Brand im Rechenzentrum habe ich die gängigen Methoden fürs WordPress-Backup beschrieben.

3) Die zu übernehmenden Beiträge exportieren

Die Beiträge aus der Quell-Website exportieren.

Auf der Website, die am Ende verschwinden soll, werden jetzt die Inhalte exportiert. Das geschieht im Backend von WordPress über den Menüpunkt Werkzeuge > Daten exportieren. Bei der Auswahl der Inhalte sollte nicht Alle Inhalte ausgewählt sein. Wir klicken stattdessen nur das an, was wir auch wirklich benötigen, also Beiträge, allenfalls auch Seiten und Formularantworten – oder was sonst noch relevant sein könnte.

Da sich nur ein Inhalt aufs Mal exportieren lässt, braucht es pro Inhalts-Art einen separaten Export.

4) Den Import durchführen

Jetzt lassen sich die exportierten Dateien bei der anderen Website einkopieren. Das passiert im Backend über den Befehl Werkzeuge > Daten importieren, wobei wir im Abschnitt WordPress auf die Option Importer ausführen klicken.

Im Anschluss werden wir gefragt, ob auch die Bilder (Attachments) importiert werden sollen. Das kann man bejahen – aber wie ich gleich ausführen werden, bringt es nicht viel.

Die Beiträge auf der Ziel-Website importieren.

5) Die Links flicken

Falls wir auf der Quell-Website interne Links verwendet haben, müssen die repariert werden. Ich verwende zu diesem Zweck das WordPress-Plugin Search Regex, das ich im Beitrag Perfektion hat ihren Preis ausführlich vorstelle.

Wie die Links zu flicken sind, hängt natürlich von den Umständen ab, insbesondere, welches Schema für die die Permalinks hinterlegt ist (im WordPress-Backend bei Einstellungen > Permalinks).

Im Fall des Beispiels beim Umzug von MrClicko.de nach Clickomania.ch ist die Sache einfach, da beide Websites das Prinzip /Jahr/Monat/Tag/Titel verwenden.

Das bedeutet, dass nur die Domain ausgetauscht werden muss. Das lässt sich mit dem Search Regex-Plugin realisieren. Bei der Suche tragen wir Folgendes ein:

https:\/\/mrclicko\.de\/(....)\/(..)\/(..)\/(.*?)\/

Und beim Ersetzen kommt dieser Term zum Zug:

https://blog.clickomania.ch/$1/$2/$3/$4/

6) Die eigentliche Crux: Die Bilder

Die Bilder und Medien sind das eigentliche Problem bei der Fusion der beiden Websites – und der Punkt, der mutmasslich am meisten Arbeit macht. Das liegt daran, dass die Bilder und Medien nicht automatisch übernommen werden. Der WordPress-Importer ändert lediglich die Adressen so ab, dass sie auf die Quell-Website verweisen. Doch da der Sinn und Zweck der Aktion darin besteht, diese alte Site abzuschalten, nützt das gar nichts.

Das heisst, dass wir leider nicht darum herumkommen, die Bilder vom Quell-Server auf den Ziel-Server zu übertragen. Wie das am besten passiert, hängt von den Umständen ab.

Es geht konkret um die Frage, wie viele Bilder vorhanden sind und wo die platziert sind – im Lauftext oder als Beitragsbild. Und ein weiteres Problem könnte darin bestehen, ob die Bilder archiviert wurden oder vom Quellserver geholt werden müssen. Auf diese Frage gehe ich am Ende dieses Abschnitts ein.

Also, zuerst zu der Grösse des Medienbestands:

Wenn nur einigen wenigen Bildern die Rede ist, dann ist es am einfachsten, wenn die Bilder bei der Ziel-Website über die Medienübersicht importiert und neu verknüpft werden. Ich habe das bei meiner Datenübernahme mit den Beitragsbildern so gemacht: Die müssen AFAIK so oder so neu zugewiesen werden, da via WordPress-Importer auf der Strecke bleiben.

Wenn von vielen Bildern die Rede ist, würde ich empfehlen, eine alternative Methode zu prüfen, namentlich den Import via RSS-Feed, den ich im Beitrag Einmal alles zum Mitnehmen, bitte anhand der Pro-Version des Plugins WP RSS Aggregator beschreibe. Ausprobiert habe ich diese Methode selbst nicht, sodass ich dazu kein endgültiges Fazit abgeben kann.

Falls auf der Ziel-Website ein FTP-Zugang besteht, können die Medien im Dateisystem des Webservers hinterlegen. Für Bilder, die im Lauftext eines Blogposts platziert sind (also nicht als Beitragsbild) reicht es völlig, die Verlinkung auf den neuen Ordner anzupassen. Das lässt sich wiederum via Search Regex-Plugin erledigen. Der Suchbegriff könnte je nach Situation etwa so aussehen:

https:\/\/mrclicko.de\/wp-content\/uploads\/....\/..\/

Und die Ersetzung könnte wie folgt lauten:

https://blog.clickomania.ch/wp-content/uploads/bildimport/

Zur Erklärung: Die Bilder sind auf dem Quellserver so abgelegt, dass es pro Jahr und jeweils für jeden Monat einen Unterordner gibt. Diese Struktur müssen wir für die übernommenen Daten nicht abbilden. Der Einfachheit halber deponiere ich alle Bilder im Ordner bildimport, auf den die Verweise nun umgebogen werden.

Wenn es notwendig ist, dass die Bilder in der Medienübersicht zur Verfügung stehen, müssen sie in der WordPress-Datenbank hinterlegt werden. Das lässt sich in einem Rutsch über das Plugin Add From Server erledigen. Es importiert die Bilder aus dem angegebenen Ordner in die Medienübersicht, sodass sie hinterher über den Dateien hinzufügen-Knopf ausgewählt werden können.

Das Plugin Add from Server importiert Medien aus einem Ordner in die WordPress-Datenbank.

Das Plugin verändert nicht den Speicherort der Bilder, d.h. es kopiert sie nicht in die WordPress-Ordnerstruktur. Es ist somit wichtig, sie selbst passend in der Dateiablage zu deponieren. Ich habe unter wp-content/uploads dafür den besagten Ordner bildimport eingerichtet.

Exkurs: die Bilder vom Quell-SErver holen

Damit die Bilder auf den Zielserver deponiert werden können, müssen wir sie erst einmal haben. Im Idealfall gibt es ein Archiv mit allen verwendeten Medien.

Doch wenn das fehlt, müssen wir die Medien wohl oder übel vom Quellserver holen. Das können wir via FTP tun, indem wir den Inhalt des Ordners wp-content/uploads herunterladen.

Falls kein FTP-Zugriff besteht, hilft ein Plugin wie Export Media Library weiter. Das führt den Download aller Medien in einem Rutsch durch.

Es gilt an dieser Stelle darauf hinzuweisen, dass WordPress Bilder in mehreren Auflösungen verwaltet. Nebst dem Original (181113-girl.jpg) sind vermutlich eine Handvoll weiterer Varianten vorhanden, die am Ende des Dateinamens eine Grössenangabe haben (181113-girl-150×150.jpg, 181113-girl-300×200.jpg, 181113-girl-768×512.jpg, 181113-girl-1024×683.jpg, 181113-girl-1200×800.jpg).

Diese Varianten kann man mitkopieren, man muss jedoch nicht unbedingt. Es kann nämlich sein, dass einige dieser Bildgrössen nicht benötigt werden, wenn auf der Ziel-Site ein anderes Theme zum Einsatz kommt. Wie man verfährt, ist Geschmackssache: Ich würde nach allen Bildern suchen, die am Ende eine Grössenangabe haben und die löschen.

Eine Alternative dazu ist, die Bilder inklusive Grössenvarianten hochzuladen und dann eine Bereinigung durchzuführen. Das ist über das Plugin Force Regenerate Thumbnails möglich.

7) Bereinigen

Im Idealfalls war es das. Natürlich müssen wir jetzt eine ausgiebige Prüfung vornehmen und zumindest in Stichproben nachsehen, ob alle Inhalte angekommen sind. Falls ein neues Theme zum Einsatz kommt, werden sich Detailkorrekturen nicht vermeiden lassen.

Wenn wir sicher sind, dass die Übernahme erfolgreich stattgefunden hat und alles funktioniert, wie es sollte, können wir die importierte Website löschen – also den ganzen WordPress-Ordner und die Datenbank vom Quell-Server tilgen.

Abschliessend empfehle ich, auf dem Webserver eine Umleitung einzurichten: Dann gehen die Aufrufe von externen Websites oder via Suchmaschinen nicht ins Leere. Dazu kommt eine .htaccess-Datei zum Zug (Details dazu unter Da geht es lang im Internet).

Im Fall meines eigenen Umzugs, bei dem die Inhalte von MrClicko.de hier unter Clickomania.ch Asyl gefunden haben, ist das der Inhalt der Datei:

RewriteEngine On
RewriteCond %{HTTP_HOST} (www\.)?mrclicko.de
RewriteRule (.*) http://blog.clickomania.ch/$1 [R=301,L]

Der Code 301 gibt an, dass die Umleitung dauerhaft ist. Das sollte dazu führen, dass Suchmaschinen den Link aktualisieren.

Da Capo: Wie geht das Aufteilen einer Site in zwei?

Es bleibt an dieser Stelle eine Frage: Funktioniert es auch andersherum? Sprich: Lässt sich dieses Vorgehen auch dazu adaptieren, aus einer Website zwei zu machen?

Wenn ein Blog über die Jahre gewachsen ist, liegt die Idee auf der Hand – insbesondere, wenn sich unter einem Dach Dinge versammelt haben, die nicht sonderlich gut zusammenpassen. Ich könnte auf die Idee kommen, die Kategorie iPhone und iPad oder Windows in eigene Sites auszulagern: Das wäre aus SEO-Gründen sinnvoll und würde womöglich auch von Leserinnen und Lesern geschätzt, die nicht an allen hier präsentierten Themen interessiert sind.

Und natürlich geht es – und es ist sogar vergleichsweise simpel: Wir können, wie bei Punkt drei beschrieben, die Beiträge einer bestimmten Kategorie exportieren. Diese werden dann auf der neuen Site importiert und auf der ursprünglichen Site gelöscht. Mit den Bildern würden wir es uns in diesem Fall einfach machen: Wir belassen sie, wie bei Punkt sechs beschrieben, auf der Ursprungs-Site. Die Links müssen wir bei der neuen Site wie bei Punkt fünf beschrieben, ebenfalls anpassen.

Das wars auch schon – eine einfache Angelegenheit.

Der Trick mit dem Klonen

Allerdings gibt es zwei Schönheitsfehler: Erstens sind die Websites über die von der Ursprungs-Site ladenden Bilder nach wie vor verbandelt. Und zweitens tritt das Problem mit den Beitragsbildern auch beim Auseinanderdividieren auf.

Darum schlage ich eine alternative Vorgehensweise vor: Als Ausgangslage für die neue Site wird eine Kopie der alten verwendet. Dazu ziehen wir wie hier beschrieben eine Kopie der Datenbank und der Dateiablage auf den neuen Server. Alternativ verwenden wir eines der vielen Cloning-Plugins-das es für WordPress gibt, zum Beispiel Duplicator.

Nun löschen wir aus dieser Kopie einfach die Beiträge, die wir nicht haben wollen: Wenn ich, wie oben beschrieben, meine iPhone-Beiträge würde auslagern wollen, würde ich alle anderen Beiträge entfernen. Dann werden die ausgelagerten Beiträge auf der Ursprungs-Site gelöscht – und voilà, fertig ist die Aufteilung.

Beitragsbild: Ungefähr so (Dynamic Wang, Unsplash-Lizenz).

Kommentar verfassen