PCとスマートフォンを切り分ける

WordPressでPCとスマートフォンの振り分けを行いたい場合、3.4以降のバージョンに標準装備されている関数「wp_is_mobile」を使って、以下のような条件分岐の構造にすることで簡単にPC/スマートフォンの振り分けが行えます。

if(wp_is_mobile()){
	// スマートフォン用の記述
}else{
	// PC用の記述
}

ただ、このwp_is_mobile関数はタブレットも含まれてしまうので、例えばこの方法でPC/スマホのレイアウトを切り替える場合、「タブレットでスマホ向けレイアウトが表示される」という状況に遭遇します。

携帯電話・スマートフォンを特定して検知するわけではなく、タブレットもモバイルデバイスとして認識されることに注意してください。 出典:関数リファレンス/wp is mobile – WordPress Codex 日本語版

もし、「タブレットはPCと同じ扱いにしたい」という場合は、テーマのfunctions.phpに以下コードを追加して「is_mobile」という新しい関数を作成します。

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
    );
    $pattern = '/'.implode('|', $useragents).'/i';
    return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
}

スマートフォン端末だけを判定させることで、タブレットをスルーさせるんですね。これで、以下のように記述すると「PC&タブレット/スマートフォン」という振り分けが出来ます。

if(is_mobile()){
	// スマートフォン用の記述
}else{
	// PC用の記述
}

特定のデバイスごとに振り分けを行う方法

ここからは、各デバイスごとの振り分け方法をご紹介します。基本は、テーマのfunctions.phpにユーザーエージェント判定用の関数を作って、それをテーマで条件指定させるという仕組みです。

iPad

テーマのfunctions.phpに以下コードを追加して新たに「is_ipad」関数を作ります。

function is_ipad() {
    $is_ipad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');
    if ($is_ipad) {
        return true;
    } else {
        return false;
    }
}

あとは、iPad用の振り分けをおこないたい個所に以下のように記述すればOK。

if(is_ipad()){
	// iPad用の記述
}

Kindle

テーマのfunctions.phpに以下コードを追加して新たに「is_kindle」関数を作ります。

function is_kindle() {
    $is_kindle = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'Kindle');
    if ($is_kindle) {
        return true;
    } else {
        return false;
    }
}

あとは、Kindle用の振り分けをおこないたい個所に以下のように記述すればOK。

if(is_kindle()){
	// Kindle用の記述
}

Android

スAndroidも同様です。テーマのfunctions.phpに以下コードを追加して新たに「is_android」関数を作ります。

function is_android() {
    $is_android = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'Android');
    if ($is_android) {
        return true;
    } else {
        return false;
    }
}

あとは、Android用の振り分けをおこないたい個所に以下のように記述すればOK。

if(is_android()){
	// Android用の記述
}

iPhone

iPhoneの振り分けだけは、WordPressで「$is_iphone」という変数が用意されているのでそれをそのまま使います。

if($is_iphone){
	// iPhone用の記述
}