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.