Php WordPress Mobile Detect作为body_类函数

Php WordPress Mobile Detect作为body_类函数,php,wordpress,function,wordpress-theming,responsive,Php,Wordpress,Function,Wordpress Theming,Responsive,我已经在WordPress主题标题中使用了一段时间了。它超越了CSS媒体查询,并允许更灵活的响应构建 但是,我现在想根据设备向body标记添加类。所以我写了一个函数,从理论上讲,它应该可以工作。然而事实并非如此,我得到的是一个桌面类,与设备无关 require_once( get_template_directory() . '/mobile-detect/Mobile_Detect.php' ); $detect = new Mobile_Detect; $mobile = $detect-

我已经在WordPress主题标题中使用了一段时间了。它超越了CSS媒体查询,并允许更灵活的响应构建

但是,我现在想根据设备向body标记添加类。所以我写了一个函数,从理论上讲,它应该可以工作。然而事实并非如此,我得到的是一个桌面类,与设备无关

require_once( get_template_directory() . '/mobile-detect/Mobile_Detect.php' 
);
$detect = new Mobile_Detect;
$mobile = $detect->isMobile();
$tablet = $detect->isTablet();
function device_body_class ( $classes ) {
    if ( $mobile ) {
        $classes[] = 'mobile';
        if ( $tablet ) {
            $classes[] = 'tablet';
        } else {
            $classes[] = 'phone';
        }
    } else {
        $classes[] = 'desktop';
    }
    return $classes;
}
add_filter( 'body_class', 'device_body_class' );

任何帮助都将不胜感激。来自英国康沃尔郡的尴尬拥抱

请尝试以下代码:

function device_body_class ( $classes ) 
{
   $detect = new Mobile_Detect;
   $mobile = $detect->isMobile();
   $tablet = $detect->isTablet();
   if ( $mobile ) {
        $classes[] = 'mobile';
        if ( $tablet ) {
            $classes[] = 'tablet';
        } else {
            $classes[] = 'phone';
        }
    } else {
        $classes[] = 'desktop';
    }
    return $classes;
}
add_filter( 'body_class', 'device_body_class' );

希望它能像预期的那样工作。

我刚刚测试了它,它完全按照预期工作。非常感谢你。因此,
$mobile
$tablet
变量需要在函数中,回想起来,这是非常有意义的。为什么不需要
require\u once
呢?很好,它对您很有用,“require\u once”实际上包括编写类“Mobile\u Detect”的文件。