我已经开发了响应式主题,我想将其提交给wordpress.org。在提交它之前,我想在主题中使用wp_is_mobile(),但是根据Function Reference / wp是移动的,这是一个坏主意,因为它说的是这样的:具体而言,因为平板电脑被视为移动设备。查看“插件”区域,找到几种有用的替代方法。也不应将其用于主题。

所以,如果我在主题function.php中使用它,例如:

add_filter('body_class','mobile_theme_body_class');     
function mobile_theme_body_class( $classes ){

    if ( wp_is_mobile() ){
        $classes[] = 'mobile';
    }
    else{
        $classes[] = 'desktop';
    }
    return $classes;
}


我的主题会被拒绝吗?

子问题:

如果我在上面的代码中使用我的函数,并使用(WP Super Cache)这样的缓存插件,我的函数将被搞砸(无法执行或返回误报) )?

感谢您的时间和答案...

评论

他们说,我们有此功能,但不要使用,因为它不好-多么具有讽刺意味。我不知道您的主题是否会因使用它而被拒绝,但是如果是这样,那么它将使讽刺性达到最大。毕竟这是WP函数,不建议使用。

真正的问题是为什么要添加移动/桌面类?

@TheDeadMedic说的是正确的,例如,您可以使用CSS媒体查询。

wp_is_mobile()真的只是个玩笑,而且确实不可靠。它依赖于可以由最终用户操纵的用户方。您需要知道,在超过10%的情况下,您的功能将失败,因此无论他们是否喜欢或不愿意,大量移动用户都会受到桌面内容的陶醉。

因此它就在那里并且很烂,就像query_posts();

#1 楼

用通俗易懂的术语来说,wp_is_mobile()并不是用来设置主题的样式。因此,如果有人操纵该字符串并发送错误信息,则无法检测到它是什么设备。
它不返回任何设备名称,如果您不在台式机上,则返回true


WordPress如何使用它:
WordPress不会在任何地方使用它进行样式设置或添加CSS。
WordPress使用它来添加或操作只能在移动设备上使用的内容(无论大小和名称如何)。添加触摸脚本,添加视口,在admin标头中添加移动类,添加移动按钮。

缓存的效果:
如果使用缓存插件,它是无用的。由于您的代码不会每次都执行,因此每次都会得到相同的结果。

WordPress大多在后端使用它,几乎每个缓存插件都排除了在后台缓存或对已登录用户说。这样就可以了。

#2 楼

wp_is_mobile()根据HTTP USER AGENT检测到设备(与屏幕尺寸无关)
wp_is_mobile根据$_SERVER['HTTP_USER_AGENT']返回true或false
如果$_SERVER['HTTP_USER_AGENT']包含Mobile(Android,IOS ...),则返回true否则返回false
有关更多信息,请检查功能源代码