Vorabeiten & Zielbild
Inhalt
Die halbe Miete und der richtige Weg
Zunächst mal, was wollen wir überhaupt hier erreichen? Die Zielstellung ist klar. Zwei WordPress-Datenbanken salopp gesagt miteinander verschmelzen und die damit verbundenen Webseiten/Blogs zu einem großen WordPress zusammenführen.
Vorarbeit
Zunächst bringt Ihr Beide WordPress-Websites auf den selben Versionsstand. Damit ist man Safe, dass die Datenbanken kompatibel sind.
Nun gibt es eigentlich zwei möglichen Varianten, wobei ich sagen muss, am Ende landet man immer bei Variante 2 als Ausgangspunkt. Die Frage ist nur ob man über Variante 1 geht oder nicht:
Variante 1:
Neues leeres WordPress installieren bzw. bereitstellen und dort die beiden alten Datenbanken und Webinhalte inkludieren
Variante 2:
Ein Bestehendes der Beiden als „Ziel“ verwenden und das andere als „Quelle“. Somit erspart Ihr Euch ein paar Schritte die ihr mit Variante 1 als Ausgangslage tun müsst.
Ich hab mich für Variante 1 entschieden und habe – bevor ich mit dem Merge angefangen habe – erstmal den damaligen WordPress Blog den ich als „Master“ ausgewählt habe in die neue Installation kopiert.
Das ist ähnlich als wenn Ihr ein Backup einspielt und wird von mir hier nicht weiter erläutert. Am Ende landet man so oder so bei Variante 2, da die neue WordPress Instanz mindestens einem der beiden bestehenden Blogstände somit entsprechend wird.
Bilder bzw. Medien und Files kopieren
Nun kopieren wir noch die „…/Content/Uploads“ mit einem FTP-Programm vom „Source„-Blog in den „Target„-Blog. Das ist wichtig, damit wir später auch die Bilder alle haben! Ihr merged also jetzt auf Filesystemebene die beiden Mediendateien.
Ich hab meine Medien mit Jahr/Monat organisiert. Da Bilder bei mir immer eine Eineindeutig aufzuweisen haben, ist das kein Problem gewesen.
Am Ende erhaltet ihr aber unter „…Content/Uploads“ eine Struktur in der Ihr bereits jetzt die beiden WordPress-Instanzen miteinander verknüpft habt. Zumindest auf Dateisystemebene. WordPress weiss davon noch nichts. So it begins…
Auch wenn Ihr die Bilder kopiert habt, WordPress weiß von diesen nichts und wird diese auch nie kennen, da ihm das Filesystem an dieser Stelle tatsächlich egal ist. Jedes Bild ist in der WordPress-Datenbank (posts, posts_metadata) erfasst. Das ist fluch und segen zugleich und der Grund wieso wir hier das überhaupt machen.
Datenbanken zusammenwerfen
Da bei mir Quelle und Ziel auf komplett unterschiedlichen Systemen / Webanbietern liefen, habe ich mich für einen entschieden und in der dortigen Datenbank (Ziel) schon Mal die Datenbanktabellen aus der Quelle bereitgestellt. Achtet dabei das ihr unterschiedliche Prefixe habt, da die Tabellen sonst nicht koexistieren können.

Zielsetzung
Keine ID-Kollisionen:
Ihr müsst Euch das so vorstellen: In Euerem bisheriges WordPress hatte der erste Beitrag die „POST_ID 1“, ein dort inkludiertes Bild die „POST_ID 2“. Diese existiert aber mit ziemlciher Sicherheit auch in eurem Quellblog, welchen wir jetzt zusammenführen wollen. Somit müssen wir einen „Offset“ schaffen. Dadurch kollieren die ID’s nicht miteinander.
Galerien zeigen wieder Bilder (Classic + Gutenberg + Jetpack):
Das selbe gilt auch für die Galerien in Euren Beiträgen. Diese beinhalten nur die „ID’s“ der Bilder.

Wenn wir nun einen Offset schaffen, müssen wir diese auch in den Inhalten der Beiträge berücksichtigen. Ähnliches hatte ich hier schon beschrieben: Bilderkauderwelsch – Korrupte und fehlerhafte Galeriebilder nach einem WordPress Merge wiederherstellen Da mir das aber zu Aufwendig war hab ich es hier deutlich vereinfacht. Seid gespannt!
Featured Images:
Die Beiträge haben i.d.R. „Featured Images“ welche wir natürlich auch wieder angezeigt bekommen wollen.
Kategorien/Tags + Kommentare bleiben erhalten:
Alle bisherigen Kommentare des zu mergenden Blogs wollen wir erhalten. Ebenso die Kategorien/Tags in den Beiträgen.
Mediathek bekommt fehlende Metadaten zurück:
Die Bilder der Mediathek haben u.U. keine Metadaten mehr. Diese holen wir zurück damit wir wieder alle Features in der Mediathek verwenden können.
Nacharbeit & Feinschliff:
Ich bin ehrlich. Wenn Ihr das hier durch habt, habt ihr – je nach Größe – noch ein wenig Arbeit vor Euch. Kategorien Geradeziehen, doppelte Tags entfernen usw. Ich hab danach noch locker ca. 2-3 Std. drangesessen. Aber ich hab ja auch nie gesagt das wir das hier alles in 5 Minuten auf Knopfdruck durchführen *lach*
Vorannahme / Begrifflichkeiten
Ich werde im Folgenden ein paar Begriffe verwenden die ich hier noch kurz erklären möchte.
Ziel–Tabellenprefix:wp_ (Beispiel)
Quelle–Tabellenprefix:src_ (Beispiel)
Ich schreibe zudem die SQL-Statements mit diesen entsprechenden Platzhaltern. Für Euch bedeutet das natürlich, dass Ihr diese ersetzten müsst! Ist logisch, aber ich kenne meine „Copy & Paste“-Kandidaten *zwinker*
Beispiel:src_ durch deinen echten Quell-Prefix (z.B. hw_…) und natürlich auch das Ziel-Prefix wp (z.B. q0c5_…)
CLI:
CLI ist das Kommandozeilentool von WordPress. Oftmasl auch aus WP-CLI betitelt. Wenn Ihr Eure Website selbst hostet – was die wenigsten wohl machen werden – hat man zumeist per SSH Zugriff darauf,

Da ich den Merge zuerst bei mir lokal durchgeführt habe, hatte ich es zunächst ein paar Funktionen per CLI abgearbeitet um dann zu merken, dass das eigentlich Blöd ist, weil ich bei meinem Hoster gar keinen Zugriff dabei hab. Daraufhin ist dann eben mein eigenes kleines WP-Plugin der sogenannte „WP Merge Fixer“ entstanden.
Für die Obernerds hier hab ich aber beide Varianten aufgeführt im Verlauf *yeah*

Schreibe den ersten Kommentar