Home > ソフトウェア > MovableTypeからWordPressに固定リンク込みで完璧に移行する方法

MovableTypeからWordPressに固定リンク込みで完璧に移行する方法

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を修正します。

関連記事:

  1. MT4 + Vicunaに移行してみた
  2. ブログ楽々更新ソフト「Windows Live Writer Portable」を使ってみる
  3. USBメモリー+Thunderbird+Gmailでどこでもメールを読み書きできる環境を作る
  4. レンタルサーバー、スペック比較 - DreamHostで、WordPressを簡単インストール(1)
  5. サイドバーに特定の「タグ」が付いたエントリー内の画像を表示させる

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を使っている方は結構多いと思いますので!

Comment Form
Remember personal info

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 [...]

Home > ソフトウェア > MovableTypeからWordPressに固定リンク込みで完璧に移行する方法

サイト内検索
RSS
メールマガジン

メールアドレスを入力してください:

配信: FeedBurner

  • ブリの照焼きを食べると口の中が荒れる。ブリアレルギーってあるみたい。  1日前
  • 西尾 維新の「クビシメロマンチスト」を読んだ。読んだ後に、もう一回最初からちゃんと読みなおしたいと思えた本は久しぶり。ドグラマグラ的な。  1週間前
  • 北森鴻氏が亡くなったとのこと。蓮丈那智シリーズは好きだっただけに残念。合掌。  2週間前
  • すかんちの恋のマジックポーションを聴きながら、執筆中。  2週間前
  • ルパン3世が表示される「このブログは、いただいた」ブログパーツを貼っているブログを閲覧してたら、ブラウザー(Sleipnir)が固まった。ブログは盗んでもいいですから、ブラウザーごと盗むのだけは勘弁してください(怒)。  1週間前
  • 大槻真希のMemoriesは良いですな。ワンピースの楽曲つったら、ヘキサゴンファミリーによる新OPが批難ゴーゴーだったことが記憶に新しいところですが、昔はこんな良い楽曲が揃っていましたな。日曜朝に移ってからのOPがあまりに酷過ぎるだけでね。  3週間前
  • ベストアーティスト2009のもっちーがひどいと話題になってるそーな。でも、とくだねのときなんてこんなもんじゃなかった。それこそ放送事故。それに比べりゃ、よく持ち直したな、というのが正直な感想。  3週間前
  • イトーヨーカドーの価格誤記載の件。価格表記が明らかにミスなのは誰が見ても明らか、買えればラッキーくらいの気持ちでみんな買ってる。なのに2000円払うって。きちんと謝罪するだけで十分。前回の価格誤表記の対応もダメダメだったし、90年代のネットショップのリテラシーと同水準。  4日前
  • ワンピース56巻を何度も読み直す至福の時間。映画館でもらえる0巻もすごーく欲しいのだが、小学生に混じって映画館に行くのはさすがに・・・。いや、でも、平日にコソッと行っちゃうな、きっと。  1週間前
  • 指先があかぎれでパックリと裂けた。地味に痛い。わしゃ主婦か。  1週間前
  • 過去の独り言...

Posting tweet...

Powered by Twitter Tools.

最近の投稿
Tag Cloud

Return to page top