So, ich habe es geschafft, alle Artikel des alten Blog-Systems Beta-Blogger zu exportieren und diese in WordPress wieder zu importieren. Da ich keine direkte Übertragungsmöglichkeit gefunden habe, habe ich den Weg über CSV gewählt. Es gibt ein halbwegs brauchbares CSV-Import-Plugin und die Artikel aus dem alten Blog ließen sich mit dem folgenden PHP-Script als CSV exportieren:
<?php require 'bb_core.php'; /* see http://de.php.net/manual/de/function.htmlentities.php#90111 */ function htmlButTags($str) { // Take all the html entities $caracteres = get_html_translation_table(HTML_ENTITIES); // Find out the "tags" entities $remover = get_html_translation_table(HTML_SPECIALCHARS); // Spit out the tags entities from the original table $caracteres = array_diff($caracteres, $remover); // Translate the string.... $str = strtr($str, $caracteres); // And that's it! // oo now amps $str = preg_replace("/&(?![A-Za-z]{0,4}w{2,3};|#[0-9]{2,3};)/","&" , $str); return $str; } $entries = $blog->get_items('entry', NULL, 1000) or print $lang->no_entries; print("wp_title|wp_post_date|wp_category|wp_content|field1|field2|field3 "); foreach ($entries as $entry) { // Tags: Leerzeichen in "" ersetzen und " entfernen $tags = preg_replace('/"(w+) (w+)"/', '$1=$2', $entry->tags); // Tags durch Kommata trennen $tags = str_replace(" ", ", ", $tags); // oben ersetzte Leerzeichen zurück wandeln $tags = str_replace("=", " ", $tags); $title = htmlButTags($entry->title); $date = strftime("%Y-%m-%d %T", $entry->date); $body = preg_replace('/ /', '
', htmlButTags($entry->body)); $body = preg_replace('/src=["']media2/', 'src="/wp/wp-content/uploads/2009/09', $body); // Pipes müssen escaped werden $body = preg_replace('/|/', '|', $body); $body2 = preg_replace('/ /', ' ', htmlspecialchars($entry->body)); $teaser = htmlButTags($entry->topic); $category = htmlspecialchars($entry->category); print("$title|$date|$category|$body|$tags|$teaser| "); } ?>
Damit die Leerzeichen, die beim Export mit ‚
‘ escaped wurden, beim Import entsprechend wieder hergestellt werden, musste ich das CSV-Import-Plugin noch geringfügig anpassen und eine Zeile einfügen:
$post_content = str_replace('
', " ", $post_content);
(Das komplette, angepasste Plugin gibt es hier.)
Leider kann das Import-Plugin keine Tags importieren. Ich habe diese daher im ersten Benutzerfeld abgelegt, so dass sie dann beim Editieren des Artikels per Cut & Paste in das Tag-Feld übertragen werden können. Das ist sicherlich nicht der Hit und bedeutet, dass man jeden Artikel anfassen muss. Aber bei 34 Artikeln ist das noch machbar.