在开发Wordpress的时候,我们可能需要获取到设备的类型,比如手机、电脑或者iPad等,然后做出不同的决定,这就要求我们精确地判断出当前设备的类型。熟悉Wordpress的同学会知道,Wordpress中安装目录下的wp-includes/vars.php文件里面有个名为wp_is_mobile的函数,其代码如下:
function wp_is_mobile() {
static $is_mobile = null;
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;
}
这里面是通过获取HTTP_USER_AGENT的值来判断设备的类型,如下:
Mozilla/5.0 (iPad; CPU OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1 Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/13C75 UCBrowser/10.7.5.650 Mobile Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.31 (KHTML, like Gecko) Chrome/17.0.558.0 Safari/534.31 UCBrowser/10.9.2.712 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
第一条是iPad的,第二条是iPhone,第三条是安卓的,最后一条是电脑的UA。通过查看wp_is_mobile代码可以知道,Wordpress把iPad也当作是移动设备,但是iPad这种设备算很大了,当作手机来显示有点不合适,根据上面的HTTP_USER_AGENT我们来修改wp_is_mobile函数:
function wp_is_mobile() {
static $is_mobile = null;
if ( isset( $is_mobile ) ) {
return $is_mobile;
}
if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
$is_mobile = false;
} elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false){
$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;
}
在判断移动设备之前先判断是否是iPad,如果是则返回false。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【WordPress中如何判断设备的类型】(https://www.iteblog.com/archives/1589.html)

