Willkommen zurück zu meiner kleinen Serie. Nach den ganzen Vorarbeiten kommen wir heute zum eigentlichen Aufhänger, dem Import der Daten aus Wordpress in Drupal. Ich hab dazu das Modul Wordpress Import genommen, welches erstaunlich gut funktioniert hat.
Für die eigentlichen Blogeinträge braucht man das aktivierte Modul Blog. Will man noch Kommentare übernehmen, logischerweise Comment. Für Tags und Kategorien, braucht man Taxonomie und wenn man Trackbacks, die ja bei Wordpress eher Pingbacks sind, übernehmen, braucht man noch das Modul Trackback.
Zu allererst sollte man die Datenbank und auch die Drupal Installation sichern. Man weiß nie was bei so einem Import alles schief laufen kann und es ist wesentlich einfacher eine gesicherte Datenbank einzuspielen, als hinterher zu versuchen die falschen Einträge wieder rauszuschmeißen.
Auf der Seite von Wordpress Import wird zu diesem Zweck Backup and Migrate empfohlen. Zu diesem Modul kann ich leider nichts sagen, da ich bei Hosteurope die Möglichkeit habe unkompliziert sowohl Datenbank als auch Dateien über deren Verwaltungsoberfläche zu sichern.
Je nach Importumfang müssen die oben genannten Module installiert, aktiviert und grundsätzlich konfiguriert werden. Nach Möglichkeit sollte man vermeiden schon Daten in Drupal hineinzuschreiben. So hatte ich z.B. schon eine Taxonomie Tags angelegt und Wordpress Import hat noch Wordpress Tags zusätzlich angelegt. Die beiden Taxonomien musste ich dann per SQL Abfrage zusammenführen.
Nun muss man im Wordpress Dashboard ein Export durchführen. Dieses findet man unter Werkzeuge. Dabei wird eine XML Datei im sogenannten Wordpress WXR Format geschrieben, in der Benutzer, Einträge, Kommentare, Tags, Kategorien und Trackbacks enthalten sind. Benutzerpasswörter oder die Blogroll sind dagegen nicht enthalten und müssen manuell übernommen werden.
Beim Export muss man sich entscheiden, ob alle Beiträge oder nur die eines bestimmten Benutzers ins WXR übernommen werden sollen - in meinem Fall letzteres.
Haben wir unsere WXR, geht man in Drupal unter Administer->Content management->Wordpress Import auf Browse, sucht sich die WXR Datei aus und clickt auf Next, um sie hochzuladen. Man kann hier noch ein paar Optionen auswählen, z.B.
Nach dem alles zur Zufriedenheit eingestellt ist, clickt man auf Finish und je nach Umfang der WXR und Leistungsfähigkeit des Servers kann man sich einen Kaffee holen oder auch ein Bier, mal zum Briefkasten, einen Spaziergang durch den Park oder was einem sonst noch so einfällt.
Der spannende Teil kommt jetzt erst: Nachschauen, ob auch alles so aussieht wie man das möchte. Bei mir war z.B. die Umlaute - oder wars die Formatierung? - zerstört, so dass ich alle Artikel durchsehen musste und bei denen, wo es geknallt hat, Reparaturen vorgenommen habe. Zum Glück waren es nicht mal 100 Einträge, so dass sich der Schaden in Grenzen hielt.
Wenn es deutlich mehr sind, sollte man das Datenbank Backup wieder herstellen und mit anderen Umlauteinstellungen nochmal den Import wagen. Alternativ, wenn man sich mit SQL auskennt, kann man vielleicht auch mit geschickten SQL Queries einiges richten.
Und am Ende heißt es dann Wordpress abschalten und die Wordpress URLs auf die Drupal URLs umleiten. Das kann man z.B. mit ein wenig PHP Code machen, den man anstelle der alten index.php von Wordpress ablegt:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://example.com/blog" . $_SERVER["PATH_INFO"]);
header("Connection: close");
?>Das funktioniert natürlich nur, wenn die URLs in Wordpress dieselben waren, wie sie jetzt in Drupal sind. Vorteil davon ist, dass durch das 301 die Suchmaschinen langfristig die URLs auf die neuen Adressen ändern, ohne dass man an Pagerank einbüßt. Außerdem können Besitzer anderer Webseiten so auch ihre Links automatisch anpassen, z.B. mit dem Drupal Modul Linkchecker.
Nach dem Import sollte man die nicht mehr benötigten Module, wie Wordpress Import wieder abschalten. Je weniger Module aktiv sind, destso weniger muss der Server arbeiten und potentiell gibt es auch weniger Sicherheitslücken.