拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
mt-rebuild.plをウェブサイトの再構築にも対応させる
先日、mixiで「mt-rebuild.plで再構築がうまくいかない」という質問があがっていました。
mt-rebuild.plのソースを見たところ、ウェブサイトのことが考慮されておらず、それが原因でした。
そこで、mt-rebuild.plをウェブサイトの再構築に対応させる方法を紹介します。
1.mt-rebuld.plについて
mt-rebuild.plは、Timothy Appnel氏が作ったスクリプトで、Movable Typeのブログを様々な形で再構築する働きをします。
基本的な使い方は以下の通りです。
- mt-rebuild.plをMovable Typeのディレクトリに入れます。
- ターミナルを起動し、Movable Typeのディレクトリに移動します。
- 「perl ./mt-rebuild.pl (オプション)」と入力します。
オプションはいくつか指定することができます。
例えば、「perl ./mt-rebuildpl -all」とすると、すべてのブログを再構築することができます。
詳しい使い方は、ドキュメントのページをご参照ください。
また、mt-rebuild.plをcronで定期的に実行するように設定することもできます。
ブログ全体を最新の状態に保つために、mt-rebuild.plをcronで定期的に実行している方も、結構いるようです。
2.mt-rebuild.plをウェブサイトに対応させる
mt-rebuild.plは古いスクリプトです。
現在配布されているバージョンは0.2ですが、そのソースをみると「Copyright 2003」とあります。
その頃のMovable Typeには、ウェブサイトの機能はありませんでした。
そのため、「mt-rebuild.pl -all」として全体の再構築をしようとしても、ウェブサイトが再構築されないという現象が起こります。
「mt-rebuild.pl -all」でウェブサイトも再構築できるようにするには、mt-rebuid.plの67行目を以下のように書き換えます。
書き換え前
my $iter = MT::Blog->load_iter;
書き換え後
my $iter = MT::Blog->load_iter({ class => '*' });
3.他にも不十分な点がある
mt-rebuild.plには、ウェブサイトに対応していなかったこと以外にも、現在のMovable Typeで使うには不十分な点があります。
以下のようなことができません。
- あるウェブサイト(およびその配下のブログ)だけを再構築することができない。
- 「-archive_type=XXX」のオプションで、Movable Type 4以降で追加されたアーカイブ(カテゴリ年別など)を再構築することができない。
- 「-template=XXX」のオプションでインデックステンプレートを再構築する際に、再構築するテンプレートを識別子で指定することができない。
余裕ができれば、これらに対応する方法も紹介するかも知れません。