スマホからなのか、PCからなのか切り分ける


スポンサーリンク

メディアの切り替えは、基本レスポンシブに任せておけばいいんだけど、
場合によっては、チェックして、表示内容を変えたい場合があるよね?
その時どうするか。
 
function.php にでも以下をいれておく。
function is_mobile(){
	if (is_admin())return;
	
	// $MOBILE_FLAG;
	$MOBILE_FLAG = false;
	
	$arr_useragent = array(
		'iPhone', 			// iPhone
		'iPod', 			// iPod touch
		'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('|', $arr_useragent).'/i';
	$result = preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);

	// Check Android device
	if (!$result) {
		// For Android mobile
		$arr_useragent = array('Android', 'Mobile');
		$pattern = '/^.*(?=.*'.implode(')(?=.*', $arr_useragent).').*$/i';
		$result = preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
	}
	$MOBILE_FLAG = $result;
	return $MOBILE_FLAG;
}
?>

あとはいいよね? 一か所で聞くなら if の中できけばいいし、あちらこちらで聞くなら,
global $MOBILE_FLAG; とかを設定しといてそれに代入しておく。
例えば、一か所
<?php if( is_mobile() ){
    echo 'モバイルからだしぃ';
}else{
    echo 'モバイルからぢゃねーしぃ';
}
?>
 
グローバル変数で使いまわす。
function.php の function 群の外で、$MOBILE_FLAG; を宣言しておいて、
$MOBILE_FLAG=false;
function is_mobile(){
	if (is_admin())return;
	
	// $MOBILE_FLAG;
	global $MOBILE_FLAG;
	
	$arr_useragent = array(
		'iPhone', 			// iPhone
		'iPod', 			// iPod touch
		'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('|', $arr_useragent).'/i';
	$result = preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);

	// Check Android device
	if (!$result) {
		// For Android mobile
		$arr_useragent = array('Android', 'Mobile');
		$pattern = '/^.*(?=.*'.implode(')(?=.*', $arr_useragent).').*$/i';
		$result = preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
	}
	$MOBILE_FLAG = $result;
	return $MOBILE_FLAG;
}
?>
 
index.phpの頭辺りで is_mobile を呼んでおいて、
<?php if( $MOBILE_FLAG ){
    echo 'モバイルからだしぃ';
}else{
    echo 'モバイルからぢゃねーしぃ';
}
?>

関数の中で使う場合は、
function hoge()
{
    global $MOBILE_FLAG;
    if( $MOBILE_FLAG ){
        echo 'モバイルからだしぃ';
    }else{
        echo 'モバイルからぢゃねーしぃ';
    }
}
?>

スポンサーリンク