SEO最適化済みのシンプルな無料WordPressテーマ「Simplicity」と WP Super Cache を組み合わせて使う

最近このブログの WordPressテーマを twentyforteen から「Simplicity」に変更してみました。かなりSEOに最適化されているし、Google AdSense 広告を貼るスペースも用意されてていい感じなのですが、1つだけ大きな問題が…

本ブログでは WP Super Cache を使ってるのですが、下記の記事にあるように、Simplicityは WP Super Cacheと相性が良くないのです。

具体的には、リンク先記事にあるように、PCでモバイル向け記事が表示されたり、その逆が起こったりします。

原因としては、これもリンク先記事にあるように、Simplicityが wp_is_mobile() を使ってPC向け表示とモバイル向けの表示を出し分けてるからなんですが、WP Super Cache の方にもPC向け表示とモバイル向け表示を別々にキャッシュする機能があるので、両者の設定をうまく合わせてやることによって問題を回避することが出来ます。

Simplicity の設定

まずは Simplicity 側の設定です。

「外観」→「カスタマイズ」からテーマカスタマイザーを立ち上げ、「レイアウトの設定」から「完全レスポンシブデザインにする」を オフ にします。

Simplicityの設定

WP Super Cache の設定

次に、WP Super Cache の設定です。

「設定」→「WP Super Cache」から WP Super Cache の設定画面を表示させ、「詳細」タブをクリック。「詳細」の「Mobile device support.」をオンにします。

WP Super Cacheの設定

問題

以上の設定で、PC向けの表示はPC向けのHTMLとして、モバイル向け表示はモバイル向けHTMLとしてキャッシュされるようになるのですが、ここでまた1つ問題が…

Simplicity はモバイルの判定に wp_is_mobile() を使い、WP Super Cacheはモバイルの判定を独自に行なっているのですが、そのため「wp_is_mobile() ではモバイルと判定されるが、WP Super CacheはPCと判定してしまう」なんて端末が出て来てしまいます(逆もあり得る)。

よく使われている端末だと iPad がこの問題に当たります。このブログには iPad からのアクセスもあることですし、これは修正しておきたいと思います。

WP Super Cache で iPad をモバイルとして扱う

WP Super Cache がモバイルとして扱う端末のリストは、wp-content/wp-cache-config.php の中の $wp_cache_mobile_browsers で次のように定義されています。

$wp_cache_mobile_browsers = '2.0 MMP, 240x320, 400X240, AvantGo, BlackBerry, Blazer, Cellphone, Danger, DoCoMo, Elaine/3.0, EudoraWeb, Googlebot-Mobile, hiptop, IEMobile, KYOCERA/WX310K, LG/U990, MIDP-2., MMEF20, MOT-V, NetFront, Newt, Nintendo Wii, Nitro, Nokia, Opera Mini, Palm, PlayStation Portable, portalmmm, Proxinet, ProxiNet, SHARP-TQ-GX10, SHG-i900, Small, SonyEricsson, Symbian OS, SymbianOS, TS21i-10, UP.Browser, UP.Link, webOS, Windows CE, WinWAP, YahooSeeker/M1A1-R2D2, iPhone, iPod, Android, BlackBerry9530, LG-TU915 Obigo, LGE VX, webOS, Nokia5800'; //Added by WP-Cache Manager

では、wp-content/wp-cache-config.php を直接編集して iPad を追加してしまえばいいかと言うと、残念ながら管理画面の WP Super Cache の項目にアクセスした瞬間にこのファイルは書き換えられてしまうのです。

色々調べてみたところ、WP Super Cacheには “cached_mobile_browsers” という filter hook が用意されていて、この filter を使えばモバイルブラウザの定義を変更出来るそうです(by WP Super Cache for Developers)。

というわけで、「WP Super Cacheのモバイルブラウザの定義を変更するだけの簡単なお仕事をするプラグイン」を作ってみます。具体的には、以下の内容を書いたファイル wp-super-cache-simplicity.php を wp-content/plugins/ に置き、管理画面の「プラグイン」から有効化します。

<?php
/*
Plugin Name: WP Super Cache for Simplicity
Author: KOMATSU Shinichiro
Version: 1.0
 */

function wp_super_cache_simplicity_browsers( $browsers ) {
        if (is_array($browsers)) {
                $browsers[] = 'iPad';
        }
        return $browsers;
}

add_filter( 'cached_mobile_browsers', 'wp_super_cache_simplicity_browsers' );

以上で、少なくとも手元にある端末(PC, iPhone, iPad, Android)では問題なく表示出来るようになりました。

スポンサーリンク
スポンサーリンク:

フォローする