閲覧デバイスを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に追加してこちらを使うようにしましょう。