7月 072013
 

今回 MovableType-3.3.3(以降 MT と記述) から WordPress-3.5.2(以降 WP と記述) に乗り換えたのですが、その顛末をちょと書いてみます。合わせて WordPress のテーマの日本語化の情報も書いてみます。
まず、今回 MT から WP に置き換えたドメインは以下の通り。後ろのカッコ内は WP で利用したテーマです。

http://icmpv6.org/blog/ (Atahualpa)
http://motsuyaki.org/ (Gray and Square)
http://running-dog.net/ (Suffusion)

FreeBSD の場合 WP は ports になっているのでインストールが簡単です。バージョンアップ時は ports から行うか WP の機能で行うかは自分の判断で。ただ ports からインストールした場合は /usr/local/www/wordpress/ にインストールされるのでサーバルートを違うところにしている場合には ports は最初の一回だけで良いかもですね。

以下に MT から WP に移行したときのはまり道をちょっと書いてみます。

 
1. MT からデータをエクスポート
MT からのエクスポート時にヘッダ情報を付加するために lib/MT/ImportExport.pm を編集する。ってのは色々なブログで書かれているのでここでは割愛します。

ただ、WP 側で「パーマリンク設定」をするのであればそのデータを取得しやすいように、自分の好みに改修したほうが良いかもしれません。

僕の場合は WP でのエントリ表示のためにカスタム構造で以下のようにしました。

/%year%/%monthnum%/post_%post_id%.html

 
http://URL/yyyy/mm/post_ID.html

ID というのは MT から取得できるのですが、そもそも MT が URL に勝手に post_ID.html って付けている場合が多くて、たまに hoge_hoge.html って URL で作成しているんですね。 WP 側では「パーマリンク設定」で MT が生成した URL の /yyyy/mm/post_ID.html の形式にしたので /yyyy/mm/hoge_hoge.html は全て mod_rewrite でぶっ飛ばす。ようにします。

で、私の場合は ID: ヘッダは PERMALINK を持って来ました。あとでスクリプトで不要な URL の文字列と “post_” と “\.html” を削除して ID: としました。

 
2. MT からエクスポートしたデータの編集
せっかく全記事の内容がテキストファイルになっているので一括して色々変更します。テキストで行なったのは以下の通り。

1). ID: を URL から
上にも書きましたが ID を PERMALINK から持ってきて変更します。
hoge_hoge.html の場合は post_ID.html にするのですが、MT からエクスポートした中身の最後の ID から順番に振りなおしてあげます。

使い捨てスクリプトで美しくないんだけど変換時のスクリプトはこんな感じ。

#!/usr/bin/perl
my $f = shift;
my $c = 234;
open(IN,"<$f");
while(<IN>) {
    if (/^ID:/) {
        my @tmp = split("/",$_);
        $tmp[5] =~ s/\.html//;
        if ($tmp[5] =~ /post_/) {
            $tmp[5] =~ s/post_//;
        } else {
            print "ID: $c\n";
            $c++;
            next;
        }
        if ($tmp[5]  =~ /^[0-9]*$/) {
            print "ID: $tmp[5]";
        } else {
            print "ID: $c\n";
            $c++;
        }
        next;
    }
    print;
}
close(IN);

 
$c には MT のエクスポート時の最後の post_ID.html で使われていた数値に +1 した値を書きます。 ID が一意になれば順番はどうでも良いのでこれで行けます;-)。hohe_hoge.html でも新規に WP では新規に ID を割り当てるのでその ID を利用して post_ID.html 形式にしました。

2). <br /> タグの追加
実際に WP にデータを突っ込んでみると改行が自分の思い通りにならないことが多々あるのでテキストファイルのうちにスクリプトで一括追加しました。
二行改行したい場合には <br />& nbsp;; とすると良いみたいです。

3). その他
自分で気に入らない部分をテキストファイルの内がガンガン変更してしまいましょう。あ。 そーいう環境がある人には。ですが。

4). この段階で RewriteRule が解るのであれば生成してしまう
まぁ、以前の URL を引き継ぎたい。という場合が多々あります。全エントリのテキストファイルがあるので .htaccess に書く RewriteRule もスクリプトで出力したほうが楽でしょうなぁ。
PERMALINK: と新規に生成した ID: から RewriteRule を生成すると良いです。

 
3. WP へエクスポート
“Movable Type and TypePad Importer” というプラグインを利用する。というのはあちこちに書かれているので詳細はここでは割愛します。

一点だけ書くと、 MT からエクスポートして編集したファイルをアップロードして MySQL に入れた場合、 ID をせっかく 1 からにしても 上記プラグインは WP 側の MySQL の 1 を勝手に利用してしまって ID が 2 からになってしまいます。つまりは RewriteRule をせっかく書いても一個ずれてしまうことになるんですね。あたたた。

なので、ウェブブラウザからアップロードするのではなく、ちゃんと wp-content/mt-export.txt に設置してからアップロードするほうが良いでしょうなぁ。ちなみに MySQL 内のポストテーブルとコメントテーブルを初期化するだけで何回でもアップロードできます。

MySQL の SQL 文は以下の通り。これをしたあとにインポートするとデータが無事に入ると思います。

mysql> delete from wp_posts;
mysql> delete from wp_comments;
mysql> alter table wp_posts auto_increment=1;
mysql> alter table wp_comments auto_increment=1;

 
何回か試行錯誤して試していると WP の中で ID がどうしてテキストファイルの ID とずれるのか解るようになるかと思います;-)。

 
4. .htaccess の RewriteRule
hoge_hoge.html を post_ID.html に mod_rewrite でぶっ飛ばす設定をツラツラと書いていきます。これについてもウェブ上に色々あるので詳しくは書かないですが、一点だけ。マッチしない場合は先頭の “/” を取ってみてください。ということでしょうか。

以下はサンプルです。

RewriteCond /2008/02/2_4.html !-f
RewriteRule 2008/02/2_4.html  /2008/02/post_847.html [L,R]

 
RewriteCond はパターンが “/” で始まっているのですが RewriteRule のほうは先頭の “/” を取ります。
どうしてもリダイレクトしてくれない場合、最後の手段として “/” を取って試してみてください。あと。右側の飛ばし先は http://domain.name を付けてみるのも良いかもしれないです。

そして、本文の記事の他にカテゴリの RewriteRule も書いて準備完了。
ブログには 1,000 エントリもあって RewriteRule は 300 行書かねばならん。なんてのはもはや手でやってられないですよね。なので MT からエクスポートしたデータを参考にしてスクリプトで RewriteRule を出力する必要があるんですね。その場合に利用するのが PERMALINK: から生成する ID: なんですね。

あとは SNS 用プラグインのインストールだとかカテゴリをソートするプラグインだとかをインストールして自分好みのものにして行きます。

 

MT からのデータをインポートしたあとに表示の確認をするかと思いますが気をつける点としては、僕のあ場合、コマンド系、表示系、設定系で table タグと pre 、 code タグを使っているのですが、それらの表示がおかしい場合はだいたいがテーマのスタイルシートでタグの宣言が書かれていることが多いのでそれを削除したりして、自分の思う通りに表示してくれるようにします。

 

さてさて。せっかくなので今回色々かいた WP のテーマの日本語ファイルを公開しましょうかね;-)。一応、日本語でブログ本文のほうは表示できると思います。wp-admin 側の日本語化はまだ出来ていませんし、多分しないのではないかなぁ。と思います。それでも良ければダウンロードしてみてください。
ちなみにどれも 2013/07/01 時点の最新バージョンです。

Atahualpa: http://icmpv6.org/Prog/ja.po/atahualpa-20130701-ja_JP.po
Suffusion: http://icmpv6.org/Prog/ja.po/suffusion-20130701-ja_JP.po
Gray and Square: http://icmpv6.org/Prog/ja.po/gray-and-square-20130701-ja_JP.po
Techozoic Fluid: http://icmpv6.org/Prog/ja.po/techozoic-fluid-20130701-ja_JP.po

僕は WP の翻訳だけでなく、フリーソフトウェア系アプリを色々翻訳してきているのでアレですが、 LANG は基本的に ja_JP です。WP の場合には wp-config.php の WPLANG に設定してあるファイル名にしてください。多分 default は ja.po になると思うんですけども。

あと、場所とかそれぞれのテーマによって格納場所が変わってきますし、msgfmt コマンドで po ファイルから mo ファイルに変換してあげる必要があります。

 # msgfmt -o ja.mo ja_JP.po

 
今回はこれくらいにしておきましょうかねぇ。僕が体験した MT から WP への移行です。一番難儀したのは MT からエクスポートしたファイルの ID が WP にインポートしたらずれてしまう件かな。ここを回避できたら随分と作業は捗るのではないかと思われます。

Gray and Square なテーマはカスタマイズオプションが少ないので実際に手で CSS を変更してしまいます。例えば、 default ではビビットな色しかないのでもっと地味な色にしたい場合には gray-and-square/css/color/ の下に色に対応した CSS ファイルがあるので aqua.css などを自分好みの色に編集すると、設定メニューで Aqua を選択していても色が変えられます;-)。

 

何を今更感が十分に感じられる今回のエントリですが、今後移行していく人の参考になればと思います;-)。

 コメントを書いてください。

HTML タグが利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">

(必須項目)

(必須項目)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)