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"

こんな感じですね。


参考にさせていただいたサイト等


Twitter Comment

コメントを残す