今回、Movable Type Pro 5.2.6からWordpress 4.0への移行過程をメモしておきます。
まず、MovableTypeのエクスポートを行ってみる・・・。ん、何かが足りてない。そうなんです、パーマリンクとかかサックリなくなっています。このままじゃいけないというので検索してみた、ありました。
下記の操作の前に、必ずバックアップを取ってください。
MovableTypeからWordPressへの完全移行方法
どうやら/lib/MT/ImportExport.pmを変更するらしい。
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$><MTEntryIfTagged include_private="1"> PERMALINK: <$MTEntryPermalink$> TAGS: <MTEntryTags include_private="1" glue=","><$MTTagName quote="1"$></MTEntryTags></MTEntryIfTagged> ID: <$MTEntryID$>
上記の「DATE:」という記述を探し、その下に「PERMALINK」「EntryIfTagged」「ID」の行を追加します。
後はエクスポートです。
エクスポートしたファイルを眺めていると、あれ、パーマリンクの「post-1」などが「post_1」に変わっているではありませんか。これじゃ困るので置換しましょう。
テキストエディタなどで「BASENAME: post_」を「BASENAME: post-」に変換し保存します。安全のため、ファイル名を変更して保存します。
下準備はできたので、Wordpress側のインポートのプログラムを編集しましょう。
WordPress 3.0にMovable Typeのタグをインポートする
まるっと転載させて頂きます。
wp-content/movabletype-importer配下にある、movabletype-importer.php編集。
function save_post(&$post, &$comments, &$pings, &$tags) { $post = get_object_vars($post); $post = add_magic_quotes($post); $post = (object) $post; if ( $post_id = post_exists($post->post_title, '', $post->post_date) ) { echo '<li>'; printf(__('Post <em>%s</em> already exists.', 'movabletype-importer'), stripslashes($post->post_title)); } else { echo '<li>'; printf(__('Importing post <em>%s</em>...', 'movabletype-importer'), stripslashes($post->post_title)); if ( '' != trim( $post->extended ) ) $post->post_content .= "n<!--more-->n$post->extended"; $post->post_author = $this->checkauthor($post->post_author); //just so that if a post already exists, new users are not created by checkauthor $post_id = wp_insert_post($post); if ( is_wp_error( $post_id ) ) return $post_id; // Add categories. if ( 0 != count($post->categories) ) { wp_create_categories($post->categories, $post_id); } // Add tags or keywords if ( 1 < strlen($tags) ) { // Keywords exist. printf('<br />'.__('Adding tags <em>%s</em>...', 'movabletype-importer'), stripslashes($tags)); wp_add_post_tags($post_id, $tags); } } …中略… }
function process_posts() { global $wpdb; $handle = $this->fopen($this->file, 'r'); if ( $handle == null ) return false; $context = ''; $post = new StdClass(); $comment = new StdClass(); $comments = array(); $ping = new StdClass(); $pings = array(); $tags = ''; echo "<div class='wrap'><ol>"; while ( $line = $this->fgets($handle) ) { $line = trim($line); if ( '-----' == $line ) { // Finishing a multi-line field if ( 'comment' == $context ) { $comments[] = $comment; $comment = new StdClass(); } else if ( 'ping' == $context ) { $pings[] = $ping; $ping = new StdClass(); } $context = ''; } else if ( '--------' == $line ) { // Finishing a post. $context = ''; $result = $this->save_post($post, $comments, $pings, $tags); if ( is_wp_error( $result ) ) return $result; $post = new StdClass; $comment = new StdClass(); $ping = new StdClass(); $comments = array(); $pings = array(); $tags = ''; } else if ( 'BODY:' == $line ) { …中略… } else if ( 0 === strpos($line, "CATEGORY:") ) { $category = trim( substr($line, strlen("CATEGORY:")) ); if ( '' != $category ) $post->categories[] = $category; } else if ( 0 === strpos($line, "TAGS:") ) { $tags = trim( substr($line, strlen("TAGS:")) ); } else if ( 0 === strpos($line, "PRIMARY CATEGORY:") ) { $category = trim( substr($line, strlen("PRIMARY CATEGORY:")) ); if ( '' != $category ) $post->categories[] = $category; …中略… } } …中略… }
上記に加えて
function process_posts() { global $wpdb; …中略… } else if ( 'COMMENT:' == $line ) { $context = 'comment'; } else if ( 'PING:' == $line ) { $context = 'ping'; } else if ( 0 === strpos($line, "PERMALINK:") ) { $value = trim( substr($line, strlen("PERMALINK:")) ); $tmpvalue = strrchr($value,"/"); $post->post_name = substr($tmpvalue, 0, strpos($tmpvalue, ".")); } else if ( 0 === strpos($line, "TAGS:") ) { ns/movabletype-importer$tags = trim( substr($line, strlen("TAGS:")) ); } else if ( 0 === strpos($line, 'AUTHOR:') ) {
これでインポートの準備は完了。
MovableTypeが出力したhtmlファイル(PHP化されている方はphp)ファイルを削除して、それトップページを見てみましょう。
ん~いい感じだけど、パーマリンクが・・・・・・エクスポートしたはずなのに・・・。
んで、Wordpressの管理画面を開いて、[設定][パーマリンクの設定]を開きます。
私の場合は年月で記事を吐き出していたので、カスタム構造を選択し
/archives/%year%/%monthnum%/%postname%.php
な感じです。無事にパーマリンクを引き継げました。
あとは、MovableTypeで管理していた画像たちWordpressのメディアに登録し、Movabletypeの痕跡を消してしまいましょう。
MT形式からWordPressへ移行した際に画像をインポートするプラグイン
ダウンロードして、FTPなどでアップし、プラグインを有効化し、実行、停止、削除、これだけです。
記事に埋め込まれているURLもしっかりと書き換えてくれる優れもの。
確認後は、バッサリ消してしまいます。
このブログのURLの中身は.htaccessとindex.php、favicon.ico、そしてメディアとして登録されたuploadsのみです。
だらだら書きましたが、これで全てです。