ウェブいじいじ

ワードプレスとかその他色々

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

 - 未分類