2017-09-19 2 views
2

나는 잠시 동안 내 WordPress 테마 헤더 내에서 경이로운 mobile-detect을 사용 해왔다. CSS 미디어 쿼리를 능가하며 응답 성이 뛰어난 빌드로 유연성을 높입니다.WordPress 모바일 body_class 함수로 감지

그러나 이제 장치에 따라 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'); 

모든 도움을 주시면 감사하겠습니다. 콘월, 영국에서 큰 어색한 포옹.

답변

1

다음 코드를 시도해보십시오 :

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'); 

가 예상대로 작동 바랍니다.

+0

방금 ​​테스트 해본 결과 예상대로 정확하게 작동합니다. 정말 고맙습니다. 따라서'$ mobile'과'$ tablet' 변수는 함수 안에서해야 할 필요가 있습니다. 어떻게 require_once가 필요하지 않은가? – morgyface

+1

멋지 네요. "require_once"는 실제로 "Mobile_Detect"클래스가 작성된 파일을 포함합니다. – Tristup