閲覧デバイスをPCかスマートフォンかで認識する条件分岐タグ「wp_is_mobile」と注意点
「wp_is_mobile」はwordpressに搭載されている閲覧するデバイスがスマートフォンかどうかを判別する条件分岐タグです。
wp_is_mobile()
スマートフォンでの閲覧だった場合はtrueを返します。
大変便利な関数ですが、注意点がひとつあります。
wp_is_mobileはタブレットもスマートフォンだと返す
「wp_is_mobile」のコードは下記の様になっています。
function 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'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.) || 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 || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mobi') !== false ) { $is_mobile = true; } else { $is_mobile = false; } return $is_mobile; }
ユーザーエージェントがmobileやandroidだと問答無用でtrueを返します。アドセンス、アフェリエイトの表示にこの条件分岐タグを利用すると、意図しない表示になりかねないため、stingerなどでは独自にコードを作成してこれを利用しています。
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・タブレット」と「スマートフォン」という区別で条件分岐をさせる場合は、このコードをfunctions.phpに追加してこちらを使うようにしましょう。