从 wp_is_mobile 函数中排除平板设备

WordPress有一个非常有用的函数 wp_is_mobile(), 用于测试当前浏览器是否在移动设备上运行,此函数完全可以使用来显示不同的判断哪部分内容要加载,哪部分不用加载,还可以使用这个函数来改变不同的class,为不同的设备书写不同的样式,从而达到完美的效果。本站的菜单使用了此函数,在移动设备上以模态框的方式呈现。

原函数wp_is_mobile()

原函数在 wp-includes/vars.php文件中,如下

//所有移动设备
function wp_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;
}

使用方法

//输出不同内容
<?phpif(wp_is_moblile()){
echo '你正在使用移动设备浏览';
}else{
echo '你目前使用的不是移动设备';
}  ?>

这个函数非常强大,对于响应式布局的网站基本上满足所有移动设备,但是有一个问题是,如果只想在手机端输出而排除平板设备,则需要对此函数进行一点点改造。

排除平板设备

//移动端判断 ,去除ipad
function lerm_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'], '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 ) {
            $is_mobile = true;
    } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') == false) {
            $is_mobile = true;
    } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false) {
        $is_mobile = false;
    } else {
        $is_mobile = false;
    }
    return $is_mobile;
}

此函数就是在原来wp_is_mobile() 函数的基础上进行了一点改造,让此函数只在手机端起作用。使用方法和 wp_is_mobile() 方法一样,方辉一个布尔值。

使用方法

然后就用一下的方式就可以使用

<?php
if ( lerm_wp_is_mobile() ) {
    /* Display and echo mobile specific stuff here */
}
?>

相比于使用display:none,使用此函数可以完全在不同的设备上加载不同的北荣而不是将元素隐藏,具有非常明显的优势。

发表评论


  1. Warning: copy(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/wwwroot/hanost/wp-content/themes/lerm/functions.php on line 613

    Warning: copy(https://cn.gravatar.com/avatar/ed16e2b822560f0df89a82f386d3ac49?s=50&d=mm&r=g): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/wwwroot/hanost/wp-content/themes/lerm/functions.php on line 613
    杭州家政网
    回复

    值得思考哦,受教了!


  2. Warning: copy(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/wwwroot/hanost/wp-content/themes/lerm/functions.php on line 613

    Warning: copy(https://cn.gravatar.com/avatar/ecea7cff22dbfb9db175c0973f6ce0ca?s=50&d=mm&r=g): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/wwwroot/hanost/wp-content/themes/lerm/functions.php on line 613
    123
    回复

    友情链接申请
    网站地址:http://www.yuedudg.cn/ 360收录7000
    网站名称:动感博客网
    同意的话请到本站留言,
    同时也欢迎大家到本站申请友链,首页,内页 均可