WordPressのQuick Cacheで404ページで200ではなく404を返す

WordPressのキャッシュプラグイン「Quick Chache」で困るのは、404ページもキャッシュしてしまい、次回のアクセスから200応答してしまうことである。

これを回避するのは非常に簡単で、テーマの404.phpの先頭に、

<?php define('DONOTCACHEPAGE', TRUE); ?>

を追加しておけばOKだ。

DONOTCACHEPAGEはほかのプラグインでも使われることのある定数だが、Quick Cacheでもこれによってキャッシュするかいなかを判断している(readme.txtやソースコード参照)。これによって404.phpが呼ばれる条件のときにQuick Cacheがキャッシュをしなくなる。

function.phpなどではなく、404.phpで設定するのには訳がある。いったんはWordPressのリダイレクト機構でページテンプレートが読み込まれていて、何かしらの条件で404を返したい場合にも404.phpを呼び出しておけば対応できるからだ。ありがちな例だと以下のようなものだ。

} else { // 条件が合わず404にしたいとき
	header("HTTP/1.1 404 Not Found");
	include(TEMPLATEPATH . '/404.php');
	exit;
}

Quick Cacheはシンプルで使いやすく多くのサイトで利用されていると思うが、最新版では無料版(LITE VERSION)と有料版に分かれてしまい以前ほどの魅力はなくなってしまった。とはいえ、WordPressの高速化では手軽なプラグインであるため、凝ったことをしなければQuick Cacheの無料版でも十分だ。