WordPress主题中判断手机和iPad 等移动设备访问的函数

判断当前浏览网站的设备是否为移动设备,在结果中除去iPad

如果只是简单的判断下当前浏览博客的设备是否为移动设备,那么我们可以使用 WordPress 默认的函数 wp_is_mobile 函数来判断,但是这个函数有个问题,它把 iPad 也算作移动设备,但是 iPad 设备比较大,有时候我们仅仅希望在手机看到不同的设计和功能,所以我们可以使用 我爱水煮鱼 写了一个 wpjam_is_mobile函数,去除了 iPad :

function wpjam_is_mobile() {
 
 if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
 return false;
 } elseif ( ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') === false) // many mobile devices (all iPh, 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 ) {
 return true;
 } else {
 return false;
 }
}

WordPress判断手机移动设备

如果你打算制作针对手机移动用户的WordPress主题,可能就需要判断手机移动客户端。昨天在 wpdaxue 那里看到了 wordpress免插件判断移动设备 ,与大家一起分享。

这是一段php通用的判断移动浏览器的函数,原理比较简单,就是判断浏览器返回的user_agent,条件包括手机系统、品牌和窗口大小。

以WordPress为例,在主题的 functions.php 内加上如下代码,目前已包含常见移动浏览器的useragent,基本上可以涵盖可能会用手机上网的用户群了。

function is_mobile() {
 $user_agent = $_SERVER['HTTP_USER_AGENT'];
 $mobile_browser = Array(
 "mqqbrowser", //手机QQ浏览器
 "opera mobi", //手机opera
 "juc","iuc",//uc浏览器
 "fennec","ios","applewebKit/420","applewebkit/525","applewebkit/532","ipad","iphone","ipaq","ipod",
 "iemobile", "windows ce",//windows phone
 "240x320","480x640","acer","android","anywhereyougo.com","asus","audio","blackberry","blazer","coolpad" ,"dopod", "etouch", "hitachi","htc","huawei", "jbrowser", "lenovo","lg","lg-","lge-","lge", "mobi","moto","nokia","phone","samsung","sony","symbian","tablet","tianyu","wap","xda","xde","zte"
 );
 $is_mobile = false;
 foreach ($mobile_browser as $device) {
 if (stristr($user_agent, $device)) {
 $is_mobile = true;
 break;
 }
 }
 return $is_mobile;
 }

然后在主题任意模板如顶部加上如下判断:

<?php if (is_mobile() ): ?>
 //怎样怎样..(这里可以添加一个mobile.css,如<link rel="stylesheet" type="text/css" media="all" href="<?php echo get_template_directory_uri(); ?>/mobile.css" />)
<?php endif ;?>

还需要注意的一点:不管是单独的WordPress主题还是自适应主题,都需要在头部<head>将添加下面meta,否者可能导致手机显示字体过小等问题。

<meta name="viewport" content="width=device-width"/>

两个wordpress小技巧,希望对大家在wordpress移动设备访问判断的开发中有所帮助!

原文来自http://yusi123.com/2608.html