检测函数中的屏幕宽度

时间:2017-06-05 作者:Yoona

如果我们在桌面上,我想在菜单前添加a,如果我们在移动设备上,我想在菜单前添加B。

因此,这是我对A和B的函数:

add_action( \'wp_head\', \'A_function\' );
function A_function() {
    //add A
}
add_filter( \'wp_nav_menu_items\', \'B_function\', 10, 2 );
function B_function() {
    //add B
}
我知道我需要把这些钩子放在函数文件中,但我不知道怎么做,我知道我们可以使用wp_is_mobile().

我如何才能做到这一点?

3 个回复
最合适的回答,由SO网友:Johansson 整理而成

根据codex, wp_is_mobile(); 是一个布尔函数,如果用户在移动设备上访问网站,则返回true,因此您需要:

if ( wp_is_mobile() ) {
    // Run this only for mobile visitors
    add_filter( \'wp_nav_menu_items\', \'B_function\', 10, 2 ); function B_function(/* add B */ );
} else {
    //If we are not on mobile, then run this filter
    add_action( \'wp_head\', \'A_function\' ); function A_function(/* add A */);
}

SO网友:Rarst

WP的PHP代码在服务器端运行,它不知道也不能知道客户端设备的屏幕。

wp_is_mobile() 依赖于用户代理嗅探,即尝试匹配客户端浏览器提供的数据。这项技术被认为是出了名的不可靠,而且用途非常有限。

由于您没有提供链接服务目的的上下文,因此很难就合适的方法提供建议。客户端技术(如CSS媒体查询)通常用于在客户端浏览器中可靠地检测上下文。

SO网友:Mark Kaplun

wp_is_mobile() 不应使用。目前,它的存在主要与一些需要在管理端处理的浏览器错误有关。

对于任何需要了解物理设备大小或浏览器窗口大小的内容,都应该使用CSS和JavaScript中的媒体规则来完成。

结束

相关推荐

用于Mobile布局的WordPress菜单交换

我想为桌面和手机用户提供两种不同的菜单。因此,我使用此功能为两个菜单(主菜单、移动菜单)创建了两个位置:功能。php:function is_register_my_menus() { register_nav_menus( array( \'primary\' => __( \'primary\' ), \'mobile\' => __( \'mobile\' ) ) ); } add_action( \'init\