- 2008-09-18 (木) 20:44
- ソフトウェア
MovableType(MT)からWordPress(WP)に乗り換えようとするときに、必ずネックになってくるのが記事データ移行の問題。
MovableTypeのエクスポートデータをWordPressにインポートできるんだけど、そのときに移行できるのは、記事本文・コメントのみ。パーマリンク(URL)、カテゴリー、タグといった付帯情報は一切引き継ぐことができない。
MT・WPそれぞれのソースコードを修正してパーマリンクを引き継がせるなんてこともできるけど(下記リンク参照)、MT・WPがバージョンアップされ、元のソースコード自体が変わってしまうと、どこを修正していいのか分からなくなってしまうのが欠点。
・MovableTypeからWordPressへのURL込みの移行方法 (Wiki@browncat.org)
WPからWPへ、WXR(WordPress eXtended RSS)形式のデータを使ってブログ内容を引継ぎできるのであれば、MTでもWXR形式でインポートデータを書き出せばいいんじゃね?
ということで作ったのが、下記のテンプレートデータです。
(追記:ソースコードはキミコさんに改良していただいたものに差し替えました。)
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/1.0/" > <channel> <title><$MTBlogName$></title> <link><$MTBlogURL$></link> <description><$MTBlogDescription$></description> <language>ja</language> <wp:base_site_url><$MTBlogURL$></wp:base_site_url> <wp:base_blog_url><$MTBlogURL$></wp:base_blog_url> <MTSetVarBlock name="ecount"><$MTBlogEntryCount$></MTSetVarBlock> <MTEntries lastn="$ecount"> <item> <title><$MTEntryTitle$></title> <link><$MTEntryPermalink$></link> <pubDate><$MTEntryDate format="%Y-%m-%d %H:%M:%S"$></pubDate> <dc:creator><![CDATA[<$MTEntryAuthor$>]]></dc:creator> <category><![CDATA[<$MTEntryCategory$>]]></category> <category domain="category" nicename="<$MTEntryCategory$>"><![CDATA[<$MTEntryCategory$>]]></category> <MTEntryIfTagged> <MTEntryTags> <category domain="tag"><![CDATA[<$MTTagName$>]]></category> <category domain="tag" nicename="<$MTTagName$>"><![CDATA[<$MTTagName$>]]></category> </MTEntryTags></MTEntryIfTagged> <guid isPermaLink="false"><$MTBlogURL$>/wp/?p=<$MTEntryID$></guid> <description></description> <content:encoded><![CDATA[<$MTEntrybody$>]]></content:encoded> <guid isPermaLink="false"><$MTEntryPermalink$></guid> <excerpt:encoded><![CDATA[<$MTEntryExcerpt$>]]></excerpt:encoded> <wp:post_id><$MTEntryID$></wp:post_id> <wp:post_date><$MTEntryDate format="%Y-%m-%d %H:%M:%S"$></wp:post_date> <wp:post_date_gmt><$MTEntryDate format="%Y-%m-%d %H:%M:%S"$></wp:post_date_gmt> <wp:comment_status>open</wp:comment_status> <wp:ping_status>open</wp:ping_status> <wp:post_name><$MTEntryBasename$></wp:post_name> <wp:status>publish</wp:status> <wp:post_parent>0</wp:post_parent> <wp:menu_order>0</wp:menu_order> <wp:post_type>post</wp:post_type> <wp:post_password></wp:post_password> <wp:postmeta> <wp:meta_key>_edit_lock</wp:meta_key> <wp:meta_value>1221409228</wp:meta_value> <MTComments sort_order="ascend"> <wp:comment> <wp:comment_id><$MTCommentID$></wp:comment_id> <wp:comment_author><![CDATA[<$MTCommentAuthor$>]]></wp:comment_author> <wp:comment_author_email><$MTCommentEmail$></wp:comment_author_email> <wp:comment_author_url><$MTCommentURL$></wp:comment_author_url> <wp:comment_author_IP><$MTCommentIP$></wp:comment_author_IP> <wp:comment_date><$MTCommentDate format="%Y-%m-%d %H:%M:%S"$></wp:comment_date> <wp:comment_date_gmt><$MTCommentDate format="%Y-%m-%d %H:%M:%S"$></wp:comment_date_gmt> <wp:comment_content><![CDATA[<$MTCommentBody convert_breaks="1"$>]]></wp:comment_content> <wp:comment_approved>1</wp:comment_approved> <wp:comment_type></wp:comment_type> <wp:comment_parent>0</wp:comment_parent> <wp:comment_user_id>0</wp:comment_user_id> </wp:comment> </MTComments> <MTPings sort_order="ascend"> <wp:comment> <wp:comment_id><$MTPingID$></wp:comment_id> <wp:comment_author><![CDATA[<$MTPingBlogName$>]]></wp:comment_author> <wp:comment_author_email></wp:comment_author_email> <wp:comment_author_url><$MTPingURL$></wp:comment_author_url> <wp:comment_author_IP><$MTPingIP$></wp:comment_author_IP> <wp:comment_date><$MTPingDate format="%Y-%m-%d %H:%M:%S"$></wp:comment_date> <wp:comment_date_gmt><$MTPingDate format="%Y-%m-%d %H:%M:%S"$></wp:comment_date_gmt> <wp:comment_content><![CDATA[<strong><$MTPingTitle$></strong> <$MTPingExcerpt$> ...]]></wp:comment_content> <wp:comment_approved>1</wp:comment_approved> <wp:comment_type>trackback</wp:comment_type> <wp:comment_parent>0</wp:comment_parent> <wp:comment_user_id>0</wp:comment_user_id> </wp:comment> </MTPings> </item> </MTEntries> </channel> </rss>
使い方
(1)上のソースコードをMovableTypeの管理画面(ダッシュボード)の「デザイン」>「テンプレート」で「インデックステンプレートを作成」し、コピペします。
そそして適当なテンプレート名・出力ファイル名(仮に、export.xmlとします)を付け、保存・再構築します。
(2)無事に再構築が終わると、サイトのトップディレクトリに、export.xmlが生成されていますので、それをFTPでダウンロードします。
(3)移行元のMTと移行先のWPでパーマリンク設定が異なっていると、パーマリンクが引き継げないので、WPのパーマリンク設定をMTに揃えます。というわけで、WordPressにログインし、ダッシュボードから「管理」>「パーマリンク設定」で変更します。
MTのアーカイブ設定が「yyyy/mm/entry-basename.nhml」となっていれば、WPでは「/%year%/%monthnum%/%postname%.html」となります。
ちなみに当ブログは「/archives/<$MTEntryBasename$>.php」となっていましたので、WPでは「/archives/%postname%.php」としました。
(※:MT 2.xでは、basenameというテンプレートタグがなかったので、<$MTEntrykeyword$>を記事URLに流用するテクニックもありましたが、そういったテクニックを使っている方は、<$MTEntryBasename$>の箇所を<$MTEntrykeyword$>に変えてください)
(4)WPにexport.xmlを読み込ませます。「管理」>「インポート」に移動すると、インポート用のデータ形式を選択するページが表示されますので、「WordPress」を選択してください。
そして「export.xml」を読み込ませると移行は完了です。記事内容・コメント・トラックバック・カテゴリー・タグが移行されているはずです。(※MTの概要は、WPの抜粋に移行します)
既知の問題
タイトルで「完璧」と言っている割に、若干の問題もあります。
(1)MTで未公開になっている記事はエクスポートされません。
・対処法1:すべての記事を一旦公開状態にして書き出し、移行後に、未公開記事だった記事を未公開設定にする。一旦公開状態になってしまうので、ちょっと気持ち悪いですがインポートとエクスポートが一回で終わります。
・対処法2:一旦、通常の方法で、MT→WPへ記事を移行する。んで、未公開の記事だけを残し、後の記事は全て削除。その後、あらためて、上記の方法を使って記事をインポート。二度手間にはなるものの、こちらの方がオススメ。
(2)カスタムフィールドのインポートには対応していません。ベータ版のテンプレートデータにはカスタムフィールドの移行も含まれていたのですが、いまいち、WXR形式のカスタムフィールドの項目の仕様がよく分からなかったので削除しました。
(3)カテゴリーの名称
カテゴリー自体は移行していますが、URLまでは引き継げていませんので、移行後に、手作業でカテゴリーのURLを修正します。
関連記事:
- Newer: WordPress 2.7を触ってみる
- Older: やりすぎコージー終了の件
Comments:6
- キミコ 09-01-07 (水) 23:44
-
有益な方法のご紹介ありがとうございました!
うまくいかないところがあったので、修正して使っています。コピペしてさくっと成功する完成度で、このタイミングで公開すれば、注目を集めることができるかもしれませんよ~~。
書籍も楽しみにしています。
- らくぶろ 09-06-20 (土) 2:06
-
はじめまして。
mt2wp.zipをダウンロードし、解凍しようとしたのですが、どうやら書庫ファイルが壊れているらしくうまく解凍できません。
こちらの環境のせいかもしれませんが、ご確認お願いします。 - 吉村 09-06-21 (日) 13:55
-
コメントありがとうございました。
ZIPファイルでの配布を取りやめ、ソースコードをそのまま記載しましたので、こちらをコピペしてお使いください。 - らくぶろ 09-06-21 (日) 20:51
-
こんばんわ。
早速つかわせていただきました。
しかし、MTの追記がインポートできないようです。(xmlファイルにも追記が書き込みされていないようです。)
お忙しい中失礼いたしますが、確認のほうよろしくお願いします。 - とも 09-09-15 (火) 12:51
-
MT ver3.35 ではそのままだと使えなかったのですが、以下の変更でうまくいきました。ありがとう御座います。
18.
を削除し、
19.
を
19. - 吉村正春 09-09-16 (水) 11:04
-
>ともさん
お役に立てようで何よりです。
大変申し訳ないのですが、コメントが途中で切れてしまいました。
お手すきのときでも、切れた部分を補っていただけると助かります。
MT3を使っている方は結構多いと思いますので!
Trackbacks:5
- Trackback URL for this entry
- http://netscrander.com/archives/mt_to_wp.php/trackback?_wpnonce=133c20de40
- Listed below are links to weblogs that reference
- MovableTypeからWordPressに固定リンク込みで完璧に移行する方法 from ネットスクランダー
- pingback from Hello WordPress!» ブログアーカイブ » mtからwpへの移行 08-11-21 (金) 12:13
-
[...] 続いて参考にしたページがこちら。 http://netscrander.com/archives/mt_to_wp.php [...]
- pingback from MovableType4.23からWordpress2.7に移行してみました | mikzo blog 08-12-16 (火) 20:47
-
[...] MovableTypeからWordPressに完璧に移行する方法 [...]
- pingback from NetScrander » あけましておめでとうございます ~ 影響力のあるブログになるために 09-01-04 (日) 20:05
-
[...] や、そんな面倒なことをしなくても、僕がやったやり方(NetScrander ≫ MovableTypeからWordPressに固定リンク込みで完璧に移行する方法)でいいじゃん。こっちだとカテゴリーもタグも引き継 [...]
- pingback from CUTPLAZA DIARY » MovableTypeからWordPressへの移行とアクセスアップ関連 09-01-18 (日) 18:01
-
[...] TypeからWordPressへURLもタグも移行する方法 – Notebook :: Hibi no Note】 【≫ MovableTypeからWordPressに固定リンク込みで完璧に移行する方法 – NetScrander
- pingback from Moo Doo Blog - Movabletype4.23からwordpress2.7.1へ移行 09-04-12 (日) 2:19
-
[...] ・http://netscrander.com/archives/mt_to_wp.php [...]



