Movable Typeを定期的に再構築させるためにmt-rebuild.plを使ってみた。

※注:このブログはWordPressで構築されています。
案件で、毎日定期的にMovable Typeの再構築を行う必要があったため、メモっておきます。
mt-rebuild.pl等はGoogle等で検索すればいろいろ出てくるので割愛。
1.カスタムフィールドのための処理を追加
mt-rebuild.plはMT3時代に書かれているようなので、当然カスタムフィールドなんて存在していないんですね。。。
カスタムフィールドを処理するために、下記を追加します。
74行目付近に $mt->run_callbacks(‘init_app’, $mt); を追加
elsif ( $mode eq 'all' ) {
$mt->run_callbacks('init_app', $mt);
$mt->rebuild( BlogID => $blog_id, NoIndexes => $no_indexes )
|| die "Rebuild error: ", $mt->errstr;
}
2.アーカイブタイプの追加
80から81行目付近にあるアーカイブタイプをいろいろと追加します。
何度も言いますが、MT3時代に書かれたコードなので、PageアーカイブやAuthorアーカイブ等いろいろと足りていない様子。
念のためMT5で扱える全てのアーカイブタイプを追加しておきます。
elsif ( $mode eq 'archive' ) {
if ( !defined($archive_type) ) {
die "Rebuild Error: -archive_type is required in '$mode' mode.";
} elsif ( !$archive_type =~ m/(Individual|Page|Daily|Weekly|Monthly|Yearly|Author|Author-Daily|Author-Weekly|Author-Monthly|Author-Yearly|Category|Category-Daily|Category-Weekly|Category-Monthly|Category-Yearly)/ )
これでカスタムフィールドとMT5のアーカイブタイプに対応したmt-rebuild.plが一応完成します。
ただし、まだまだ不十分で、ウェブサイト全体での再構築はうまく処理されていません。
僕はこの状態で、CRONを使い、blogID毎に処理をしています。
複数のblogがあるとCRONジョブをたくさん回さなくちゃならなくて、なんとなく嫌なんですけど、
これ以上時間かけたくないので、blog単体で動作を確認できたのでこのまま使っています。
mt-rebuild.pl -blog_id=1 -mode="all"
こんな感じですね。
参考にさせていただいたサイト等
- MTArchiveType | テンプレートタグリファレンス
- mt-rebuildを意地でも使う – 湯めぐりの旅
- mt-rebuild.pl を使って、Movable Type を定期的にバックグラウンドで再構築する方法 | Movable Type 4 | 阿部辰也のブログ――人生はひまつぶし。