wp_is_mobile()関数でipadでスマホ表示させないようにするための設定

WordPress

ワードプレスでテーマを自作しているような時に、PC版とスマホ版でテンプレートの表示を切り替えるのに、wp_is_mobile()という関数がよく使われます。

この関数では、ipadでページを見たときに、スマホと判定してスマホのテンプレートが表示されますが、ipadで見たときは、PCのページを見せたいというシーンも多いです。

その設定方法を以下にご紹介します。

wp_is_mobile関数をカスタマイズ

wp_is_mobile関数をカスタマイズした以下のコードを、テーマフォルダ/functions.phpに追記します。
関数名は、wp_is_mobileだと、正しく動きません。
名前はなんでもよいですが、ここでは、my_wp_is_mobileという関数名にします。

■テーマフォルダ/functions.php

function my_wp_is_mobile() {
    static $is_mobile;

    if ( isset($is_mobile) )
        return $is_mobile;

    if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
        $is_mobile = false;
    } elseif (
        strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
        || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
        || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
        || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
        || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
            $is_mobile = true;
    } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') == false) {
            $is_mobile = true;
    } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false) {
        $is_mobile = false;
    } else {
        $is_mobile = false;
    }

    return $is_mobile;
}

テンプレートファイルで関数を呼び出す

テンプレートファイルに以下のようにif文を明記し、ipadはPCのテンプレート、スマホはスマホ用テンプレートが呼び出されるようになります。

if(my_wp_is_mobile()):
//ここにスマホで表示される内容
else:
//ここにpc/ipadで表示される内容
endif;

参考:functions – Excluding iPad from wp_is_mobile – WordPress Development Stack Exchange

スポンサーリンク