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

  • 投稿 : 2015-05-07
  • 更新 : 2018-08-22

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)によってページを振り分ける | モノリオ

標準のwp_is_mobileの処理を書き換えたい

追記:2018/08/22

add_filter( 'wp_is_mobile', function( $is_mobile ) { if (!empty($_SERVER['HTTP_USER_AGENT']

ブログ運営のためのブログカスタマイズ

別関数でなくて、WP標準関数のwp_is_mobile()の処理を書き換える方法です。add_filterを利用した書き換え方法が用意されているため、テーマーのfunctions.phpでの記述で変更可能です。

wp_is_mobile()の処理を置き換えるので、これを使用しているテーマ、プラグインの処理がこれに置き換わります。

スポンサーリンク