前に書いた記事ですが、Super Cacheのバージョンアップがあったり、前に書いた物だけじゃ上手く行かないことに気付いたので今回はまとめも兼ねて追記します。
また、携帯識別方法等に関してはYuriko.netさんで配布されているKtai Style用のパッチのソースを参考(と言うかほぼそのまま)にしています。
よってハンターリンクさんのこちらの記事で紹介されているwp-cache-phase1.phpの修正は不要です。

今回は主にMobile Eye+を対象に記載いたします。
Ktai Styleの場合は配布元のYuriko.netさんを参考にされたほうがいいでしょう。

まず、変更作業点2箇所になります。

  • WordPressのルートフォルダ内[.htaccess]へコードを追記
  • wp-content内の[wp-cache-config.php]へコードを追記

[.htaccess]の修正

前回も記載しましたが、まとめと言うことでもう一度記載します。
WP-Super Cacheのアップデートで、前回の.htaccessの内容とは若干異なっていますので、前回の記事の内容をコピーしてそのまま貼り付けないように注意しましょう。
WP-Super Cacheを導入した際に.htaccessに追記した部分を書き換えます。

RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*s=.*
RewriteCond %{QUERY_STRING} !.*attachment_id=.*
RewriteCond %{QUERY_STRING} !.*wp-subscription-manager=.*
RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Nokia)
RewriteCond %{HTTP_USER_AGENT} !(DDIPOCKET;|WILLCOM;|Opera\ Mini|Windows\ CE;|PlayStation\ Portable;|Nitro)
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*s=.*
RewriteCond %{QUERY_STRING} !.*attachment_id=.*
RewriteCond %{QUERY_STRING} !.*wp-subscription-manager=.*
RewriteCond %{HTTP_COOKIE} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Nokia)
RewriteCond %{HTTP_USER_AGENT} !(DDIPOCKET;|WILLCOM;|Opera\ Mini|Windows\ CE;|PlayStation\ Portable;|Nitro)
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]

上段下段共に2行ずつHTTP_USER_AGENTの記載が追加されているのが分かると思います。
実際に追記するのはRewriteRuleより上なら何処でも構いません。良くわからない場合は上記と同じようにしましょう。
また、本来Mobile Eye+では対応していなかった端末もKtai Styleと同様に追加しています。
上手く表示されるかは未確認ですが…。特別問題は無いかと思います。(更にMobile Eye+のファイルも修正が必要になります。)
不要な場合は必要なユーザーエージェントだけにしてしまいましょう。
また、2行のうち上の一行は文頭に文字列が含まれていない場合、下の一行は文頭とか関係なくユーザーエージェントに文字列が含まれていない場合、Super CacheでキャッシュしたHTMLファイルに飛ばすように設定されています。

[wp-cache-config.php]の修正

yurikoさんのパッチの内容そのままですが、そんなに長いソースでも無いので直接記述する方法をとりたいと思います(yurikoさんの場合は別ファイルを用意してその内容をincludeで読み込んでるだけなので結局同じです)。
パッチを用意しても結局wp-cache-config.phpへ一行は追加しなくてはいけませんし…。
また、Ktai Style用のパッチでMobile Eye+には不要と思われる部分は削除しています。

wp-cache-config.phpの$cache_rejected_user_agent~と言う部分の次の行に以下のソースを追記してください。

$me_mobile_agents = array(
	'DoCoMo/', 'J-PHONE/', 'J-EMULATOR/', 'Vodafone/',
	'MOT-', 'MOTEMULATOR-', 'SoftBank/', 'emulator/',
	'DDIPOCKET;', 'WILLCOM;', 'emobile/', 'KDDI-', 'UP.Browser/',
	'Nokia', 'Opera Mini', 'Windows CE;',
	'(PSP (PlayStation Portable);', 'Nitro) Opera'
);

$ua = $_SERVER['HTTP_USER_AGENT'];
foreach ($me_mobile_agents as $a) {
	if (strpos($ua, $a) !== false) {
		$cache_enabled = false;
		$super_cache_enabled = false;
		break;
	}
}

$cache_rejected_user_agent = array_merge($cache_rejected_user_agent, $me_mobile_agents);

これで携帯のユーザーエージェントが含まれる場合WP-CacheとWP-Super CacheがFalse(無効)になります。
別に意味はありませんが、変数名のks(Ktai Style)だった部分はme(Mobile Eye)に変えました 笑
前回の内容の不足部分ですが、携帯で見た時にMobile Eye+で生産したページにはちゃんと飛びますが、その後PCで閲覧した時に携帯用ページのキャッシュを出力してしまっていました。
コレはWordPressの管理画面のWP-Super Cacheの設定画面でも設定可能ですが、上記ソースの一番下の一行によって自動的に追加されるようになっていますのでこちらの対策を施していただければ特に気にする必要はありません。
あ、あとPHP4でも動くようにstriposをstrposに置き換えてます。これなのですが、PHP5の場合でもstriposよりstrposの方が実行速度が早いようなのでstrposの方がいいような気がするのですが…どうなのでしょうか?ちなみにstriposは大文字小文字を区別しない、strposは区別するというものです。ユーザーエージェントがちゃんと表記してあれば区別しても問題ないと思うのですが…。

コレで問題ないかと思います。

ちょっと前にKtai Styleの開発者であるYurikoさんがMobile Eye+のバグ修正等のパッチを公開してくださいましたね。是非導入することをオススメします。
Ktai Style風のテーマテンプレートまで用意してあったので、Mobile Eye+のデフォルトテーマから変更して見ました。
Mobile Eye+のパッチ開発、是非引き継ぎたいといいたいところですが、まだまだそんな知識がありません(;^ω^)

No related posts.