Movable Type 2.6x から WordPress への移行
長らく MovableType 2.661 のままで放置していた某ブログを WordPress に移しました。移行作業は本当にかんたんで、カテゴリーやユーザも存在しなければ作ってくれます。問題は URL が変わってしまうことなのです。
もともと MovableType でもキーワードを使って Permalink を http://example.jp/blog/2003/01/keyword のような形にしていました。さらに Apache の Content-Negotiation を使って拡張子からは .html を外していました。これは将来 PHP 等に移行した場合でもそのまま使えるようにという配慮でしたが、これが役に立ちました。拡張子を表示しない方がよい理由を詳しく知りたい人は クールなURIは変わらないを参照してください。
さて、WordPress の MT インポート機能は、MT で各エントリーにつけたキーワードを無視してしまいます。そこでスクリプトを改造して、このキーワードを投稿スラッグ (post_name) に渡すようにしてやります。変更するのは wp-admin/import/mt.php ファイルです。(WordPress 2.2 の場合)
--- mt.php.bak 2007-05-07 15:57:16.000000000 +0900 +++ mt.php 2007-07-19 17:50:01.000000000 +0900 @@ -196,6 +196,8 @@ $post = preg_replace("|(-----nCOMMENT:.*)|s", '', $post); // We ignore the keywords + preg_match("|-----nKEYWORDS:(.*)|s", $post, $keywords); + $post_name = $wpdb->escape(trim($keywords[1])); $post = preg_replace("|(-----nKEYWORDS:.*)|s", '', $post); // We want the excerpt @@ -288,7 +290,7 @@ $post_author = $this->checkauthor($post_author); //just so that if a post already exists, new users are not created by checkauthor - $postdata = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_modified', 'post_modified_gmt'); + $postdata = compact('post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_modified', 'post_modified_gmt', 'post_name'); $post_id = wp_insert_post($postdata); // Add categories. if (0 != count($post_categories)) {
これで、MovableType からエクスポートしたファイルを読み込ませれば、無事に投稿スラッグにキーワードを移行できました。
ハマった点
Movable Type からエクスポートしたファイル (UTF-8) が途中で切れているように見えましたが、これはエディタで表示できない文字コードがあったようで、ウェブブラウザでは表示できました。またインポートも問題なくできました。
アップロードファイルサイズの制限に引っかかる。MT から 800 件以上のエントリーをエクスポートしたら、ファイルサイズが 2M を超えました。このままだと php のアップロードサイズの制限に引っかかります。ファイルを分割しても良いのですが、とりあえず php.ini の upload_max_filesize を一時的に増やして回避しました。
あと、同じキーワードのエントリーがある場合、投稿スラッグが重複してしまいます。このため、WordPress が勝手に keyword-2 のような投稿スラッグに変更してしまうため、一部のエントリーは URL がどうしても変わってしまいます。今回はこれ以上は断念して、この制約を受け入れました。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.