WordPressで静的生成してみた

2008年12月20日 追記

Wordpressの静的生成でこの記事に到達する方が多いようなので補足します。

このスクリプトは現在のWordpressでは利用できません。しかし、最新版(執筆時点で2.7)ではWP Super Cacheという強力なキャッシュを行えるプラグインが公開されています。

このプラグインを導入すれば一度表示したページはファイルとして書き出されて次回以降動的生成を行いません。このキャッシュは新しく記事を投稿すれば破棄されますし、自分で指定した時間が経過したら自動的に破棄することも可能なので、ほぼ静的生成に近い動作をしてくれます。

当サイトでも導入していますので、もし可能ならこちらを使うようにしてください。

追記ここまで

現在この日記はWordPressを使用しているわけだが、これには静的生成機能が無い、いわゆるHTMLファイルを作成 することができないので自作することにした。

そして2時間の格闘の末に完成。これでようやくググル先生に拾って貰えるようになった。ブックマーク30%、検索30%、外部リンク40%のこのサイトにとってはググル様に拾って貰えないというのは結構痛いので、早めに直せて良かった。

というわけで折角だから静的生成スクリプトを公開してみる。機能としては、月間のログを出力する。これだけ。各記事毎に生成も工夫すればあっさりできるが、今のところ当サイトでは必要ないので自分で。

WordPress静的生成スクリプト

使い方としては、ログ用のテンプレートファイルが一つ必要。現在使用中のテンプレートでもいいが、それを別ファイルにして、一番頭のrequire( “./wp-blog-header.php” )を削除。これがあるとなんか動かない。で、上のファイルを落としてstatic.phpに名前を変更。

あとは必要な部分を自分用に書き換えたら、index.phpと同じ場所にアップロードする。

4行目はログファイルのディレクトリ。デフォルトってか、当サイト仕様のままなので適当にいじる。デフォルトではdiaryディレクトリ内に年4桁のディレクトリで年毎に管理。

5行目はログファイルの名前。デフォルトでは年4桁と月2桁にしてる。

12行目はログ用のテンプレートファイルをインクルードしてるので、ここも自分に合わせて変える。

あとはこれで動く・・・はず。動かし方は

`
static.php?y=年4桁&m=月2桁
`

どんな感じに出力されてるのか見たいなーって人は、このURLの最後に?cを加えれば、出力するものを表示することができる。

で、このままだとめんどいので、wp-adminディレクトリのmenu.phpを開いて44行目辺りの</ul>の前に以下のタグを挿入。

`
  <li>
    <form method="get" action="../static.php">
      <input type="text" size="4" name="y"
      value="<?php echo date('Y'); ?>" />
      <input type="text" size="4" name="m"
      value="<?php echo date('m'); ?>" />
      <input type="submit" value="ログ作成" />
    </form>
  </li>
`

こうしておけば、管理画面のメニューの下にフォームが表示されていて、現在の日付が既に入力されている状態なので、ボタンをポチっと押すだけでログファイルの作成は完了する。

ああ、そうそう。ログディレクトリに書き換え可能な属性666とかを与えておかないと失敗するので注意。

一応当サイトでは動いてるが、他の環境だとどうなるか全くわからんので、もし動いちゃったりしたら、「動いたよー」とトップページ一番下のフォームに一言でも入れてくれるとありがたい。