WordPressでモバイル(スマホ)を判別するis_mobile()を作成する

wp_is_mobile()を直接使わない方がよいかも

この関数は、タブレットがモバイル扱いになります。

function is_mobile(){
   return wp_is_mobile();
}
テンプレートの「functions.php」に上記のようにis_mobileという関数を追加して、wp_is_mobileの代わりに使えば後からの変更に耐えれるかと思います。

タブレットの扱いを現状はモバイル扱い(スマホ扱い)でOKでも、後々PC扱いにしたい場合は、この1か所をかえれば済みます。

独自のis_mobile()関数を作ろう

・Android タブレット =「Android」の文字列が含まれる
・Android スマホ = 「Android」と(AND)「Mobile」の2つの文字列が含まれる
・iOSタブレット = 「iPad」の文字列が含まれる
・iOSスマホ = 「iPhone」か「iPod」の文字列が含まれる
・Windowsパソコン(タブレット) = 「Windows」の文字列が含まれる
・Windowsスマホ  = 「Windows」と「Phone」の文字列が含まれる

UAをみて判断するわけですが、上記の規則が存在します。それを利用して判別するis_mobile()を作成します。

参考:スマートフォンとPCをユーザーエージェントで振り分ける | Web Tips

function is_mobile(){
    $useragents = array(
        "iPhone", // iPhone
        "iPod", // iPod touch
        "Android.*Mobile", // 1.5+ Android *** Only mobile
        "Windows.*Phone", // *** Windows Phone
        "dream", // Pre 1.5 Android
        "CUPCAKE", // 1.5+ Android
        "blackberry9500", // Storm
        "blackberry9530", // Storm
        "blackberry9520", // Storm v2
        "blackberry9550", // Storm v2
        "blackberry9800", // Torch
        "webOS", // Palm Pre Experimental
        "incognito", // Other iPhone browser
        "webmate", // Other iPhone browser
        "webmate" // Other iPhone browser
    );
    $pattern = "/".implode("|", $useragents)."/i";
    return preg_match($pattern, $_SERVER["HTTP_USER_AGENT"]);
}
上記のコードは、(たぶん昔の)wptouchを参考にしたものらしいです。preg_matchを使用したコードですが、ifとstrposで似たようなコードはかけるのでそちらでもよいかと思います。

参考:
wordpressのプラグイン wptouchのソースを見ていたらお勉強になりました | 温故知新 linux実践講座
PHP で、ユーザーエージェント(iPhone・Android・タブレット・携帯・PC)によってページを振り分ける | モノリオ

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。