[WordPress]IDを維持したままMovable Type 3.2からWordPress2.0.2へ移行する


Importing from MT 3.2 to WP 2.0.2 やってみたので忘れないうちにメモ。

MTで使っていたIDをWPでそのまま使う、Movable TypeからWordPressの移行方法については、Mudita JournalさんのImporting from MT to WordPressという記事を参考にしたのですが、この方のMTはバージョン2.6のようで、MT3.2とはファイルのプログラムの記載が若干異なっているようなので、まとめ直してみました。

MTのエクスポートスクリプト(ImportExport.pm)を編集する

まずはMovable Typeのエクスポートスクリプト(ImportExport.pm)をいじります。/lib/MT/ImportExport.pmをテキストエディタで開いて、sub exportの文字列を検索します。

その下に
$tmpl->text(<<'TEXT');
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
……

という文字列があります。ここにある項目がMTの書き出しによって書き出されてくるので、ここにID: <$MTEntryID$>の項目を付け足してやります。

$tmpl->text(<<'TEXT');
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
ID: <$MTEntryID$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
ALLOW COMMENTS: <$MTEntryFlag flag="allow_comments"$>
……

こんな感じに。場所は必ずここってわけでもないようですが。書き換えたら、元の位置にアップロードして上書きします。

MTの書き出しから、データをエクスポート

MT管理画面MTの管理画面のメニューから「読み込み/書き出し」を選びます。「< strong>エントリーの書き出し」タブを選んで、「(サイト名)のエントリーを書き出す」のリンク先をテキスト形式で保存します(テキストエディタで開いて、バックアップデータにMTのIDがきちんと入っていることを確認しておくことを忘れずに)

WPのインポートスクリプトを置き換える

上述したMudita JournalさんがImporting from MT to WordPressにて、MTのIDも含めてインポートできるスクリプト(?)を公開されているので、こちらを利用させてもらいます。

ダウンロードして(検索で「this one」の文字列を検索するとそこからダウンロードできます)解凍してできたmt.php/wordpressインストールディレクトリ/wp-admin/import/にアップロードして置き換えてやります。

※ Mudita Journalさんでは、元のファイルはバックアップのためmtORIG.phpに変えておくように書かれていますが、なぜかわたしの環境では mtORIG.php(mtORIGINALとかでもダメ)が邪魔して(このあと行う)スクリプトが実行されなかったので、サーバー上のファイルは上書きしてしまいました。ローカルの元ファイルは取っておくと安心かもしれませんね。

インポートを実行する

wordpressインポートメニューWordPress管理画面の「インポート」をクリックして、さらにインポート元 CMSとして「Movable type」を選択します。

MTからのインポート画面すると左のような画面になるので、さきほど作成したMTのエントリーデータを指定します。

ユーザ名を選択次にMTのエントリーを、どのユーザ名の投稿として取り込むかを選択します。全部adminとして取り込むこともできるので、これでいってみました。

インポート中取り込み中。決して忙しいわけではありません。

インポート中すべて完了しました」と出たらインポート終了です。メイン画面に戻って取り込みがきちんとできているか確認してみましょう。

.htaccessを使って旧URLへのアクセスを新URLにリダイレクトする

ここからはオプションのようなものですが、MTのエントリーへのアクセスがあった場合に、同じ内容のWPのエントリに自動的にリダイレクトするようにしてみました。

URLが移動した場合の.htaccessの書式は、
Redirect Permanent 旧URL(相対パス) 新URL(フルパス)
なので、1エントリごとに1行ずつ書いてやらないといけません。

バカ正直に書くのは激しく面倒なので、Wordpress WikiのA method for redirecting Movable Type entries to Word Press permalinks using .htaccessを参考に、MTのテンプレート作成機能を使ってファイルを一つ作ってやります。

MT管理画面の「テンプレート」→「テンプレートを新規作成」で、テンプレート名:Redirect、出力ファイル名:redirect.phpと入力(名前はこうじゃなくてもいいんですけどね)。
テンプレート内容に
<?php
require('wp-config.php');
header('Content-type: text/plain');
?>
<MTEntries lastn="999999">
Redirect Permanent /mt/archives/<$MTEntryID pad="1"$>.php http://www.yourpage.com/archives/<$MTEntryID$>
</MTEntries>

と入力します(赤字のところは、環境に合わせて修正してくださいね)。

この内容で保存→再構築してできたredirect.phpをダウンロード。テキストエディタで開いてやるといっぱい redirectが並んでいるので、これを.htaccessにコピー&ペースト&アップロードすれば完了です(アップロード先は rootディレクトリ。すでに存在する場合は上書きではなく、中身に追記してください)。

,

“[WordPress]IDを維持したままMovable Type 3.2からWordPress2.0.2へ移行する” への10件のフィードバック

  1. WordPress本、2冊ほど紹介。…

    WordPressの導入、およびカスタマイズに便利な本を2冊。どちらも今年の下半期に出たばかりのものです。毎度お世話になっているsmoothさんの所でも今日はブログ本の (more…)

  2. はじめまして!私も以前からMTを使っています。そこで今回、WPの移行を検討しています。そこで、今回この記事を拝見させて頂き移行してみますとお蔭様で移行は無事完了しました。ただ、少し疑問があるのがリンク先から画像までが正常に表示されているのですがこれはあくまでもリンク先は以前のままなのでしょうか?FTTPで確認するとやはりWPフォルダ内にはリンク先画像は移行されていません。(当然のように思えます) 初めてで大変申し訳ないのですがアドバイス頂けないでしょうか? 宜しくお願いします。

  3. この方法はMTのエントリ(正確にはHTMLを含みインラインCSSを含まない記事)をエクスポートし、WPへとインポートしているだけなんです。
    MTもWPも記事内で使う画像をどこに(どのフォルダに)アップロードするかはまったくの自由で、システム的に管理しているわけではないので画像その他のファイルについては手作業で移行してやる必要がありますね(わたしはMTとは無関係のフォルダで画像を扱っているので、MT→WPで画像へのパスはまったく変更していません)。

    もし画像へのパス(MTで使っていたものとWPで使いたいもの)が比較的単純なものであれば、「MTの書き出しから、データをエクスポート」の段階のときに出来たテキストファイルに対してパスを置換してやればOKです。
    ・http://www.ほげほげ.com/mt/mt-static/
    →http://www.ほげほげ.com/wordpress/images/
    といった感じですね。

    すでに移行してしまったものについてはインポートしなおすか、MySQLのデータに対して置換をしてやればよいと思います。MySQLについてはあまり詳しくもないので、間違ったことを言ってもあれだし、詳細については割愛させてください(゜ー゜;)

  4. アドバイスありがとうございます。つい最近からWPをはじめたばかりなので理解に苦しんでおります。そこで、今回の移行で画像も正常に表示されているのですがパスなどはどこで確認すればいいのでしょうか? また、下記のカスタマイズもしたいと考えておりますのでお手数ですがアドバイスお願いします。

    1)「続きを読む」を記事直下に表示させて日本語表示させる。
    2)貴Blogのようなページ分割
    3)コメント欄に名前、メールアドレス、URL入力欄の表示

  5. 画像のパスの扱いとかはWordPressに限ったことではなくて、ファイル管理やホームページ作成の基本的なことなので、もしわからないようであれば先にそのあたりを勉強されたほうがいいかとは思いますが、単純にパスを調べるのであればパスを調べたい画像のプロパティを開くことで確認できると思います。

    1)2)3)についてはすべて使用しているテーマに依存します。
    index.phpファイルやsingle.phpに<?php the_content(‘続きを読む’); ?>という一文が入っていて、記事の投稿の際に<!–more–>を入れるとそれ以降の文章が追記される形になります。続きを読むというところが、続きのリンクとして表示される表現ですね。
    このあたりはMTと似たような感じですね。

    同様に、<php the_content(); ?>の下に< link_pages(‘<p>ページ:’.'</p>’.’number’); ?>という一文があることを前提に、投稿の際に<!–nextpages–>を入れるとページを分割できます。
    3)はほとんどのテンプレートで最初から表示されてると思うんですけど、そうでもないんですかね?

  6. ご無沙汰しております。以前はWPの件でアドバイス頂きありがとうございました。あれから一度WPを断念してつい先日から再度トライしています。
    そこでアドバイスとお願いがあるので下記にまとめてみました。
    1)WP-dtreeプラグインを導入するとツリー化で日本語文字だけ文字化けする。
    文字コードの影響か?と思い何度か文字コードを直しましたが解決できません。
    WP-dtreeプラグイン:http://www.silpstream.com/blog/wp-dtree/
    2)MTのように「サイドメニューの折りたたみ」をWPでも実現させたい。
    導入を何度か試みましたがソースの違いなどでなかなか導入できない(泣)
    お手数ですがWPでの「サイドメニュー」の折りたたみをエントリーして頂けないでしょうか。
    参考にしているサイト:小粋空間:http://www.koikikukan.com/archives/2004/12/06-020033.php
    3)MTのエントリーをWPに移行するにあたりMTから書き出しをしたのですが
    WP側で1回のインポートの容量制限があるようなのでインポートできない。
    そのような事から分割してインポートする必要があるのだと考えているのですが
    どのようにして分割すればいいのでしょうか?
    以上3件大変お手数だと思いますがアドバイス等お願いできないでしょうか。
    宜しくお願いします。

  7. 出かけていて回答レス遅くなりましたが…
    >Panserさん
    1はフォーラムでも質問されているようですので、そちらでどうぞ。
    2については私が折りたたみにしていないのでご要望としては承りますが、エントリの予定はありません。
    3は、エクスポートしたファイルをエディタで開くと線で区切られていると思うので、適当なところでファイルを区切ってインポートすればOKです。ファイルを保存するときには文字コードに注意してください。

    >通りすがりさん
    わざわざどうもです。

フォームは コメントしてほしそうに こちらを見ている……!

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください