WordPressのQuickCache+WPtouchに仲良く同居してもらうプラグイン

WordPressのQuick Cacheプラグインを使用すると、ハードディスク内に静的なキャッシュを作ってくれるので、パフォーマンスが向上しますが、WPtouchなど動的にテーマを切り替えるプラグインと併用すると、PCで見たのにモバイル用テーマが表示されたりして、慌てることがあります。

“No-Cache User-Agent Patterns”に登録しただけでは不十分なの?

Quick Cacheプラグインではこれを回避するためにキャッシュさせないユーザーエージェントを”No-Cache User-Agent Patterns”に登録することができます。

しかし、以下の条件がそろうと、モバイルテーマのままキャッシュされてしまいます。

  1. キャッシュされていないページに対するアクセスである。
  2. No-Cache User-Agent Patternsに登録していない端末からのアクセスである。
  3. WPtouchは、その端末をモバイルと判断した。

というわけで、以下のようなプラグインを作りました。

このプラグインは、theme_rootというフィルターフックで動作し、もしテーマディレクトリがplugins/wptouch内である場合に、キャッシュしないための定数を定義しています。

つまり、WPtouchのモバイルテーマで表示するときにはキャッシュしないように指定することで、PCでのアクセスに対してモバイルテーマで表示しないようにしています。

ただし、このプラグインはモバイル端末を判別するわけではありませんので、QuickCache側の”No-Cache User-Agent Patterns”は登録しておかないと、PC用のテーマで出力されます。