2017-09-19 1 views
2

J'ai utilisé le merveilleux mobile-detect dans mon en-tête de thèmes WordPress pendant un certain temps. Il va au-delà des requêtes de médias CSS et permet plus de flexibilité avec une construction réactive.WordPress Mobile Detect en tant que fonction body_class

Cependant, je veux maintenant ajouter des classes à la balise body en fonction de l'appareil. J'ai donc écrit une fonction qui devrait, en théorie, fonctionner. Quoi qu'il en soit, je reçois une classe de bureau indépendamment de l'appareil.

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

Toute aide serait grandement appréciée. Grands câlins maladroits de Cornwall, Royaume-Uni.

Répondre

1

S'il vous plaît essayez le code suivant:

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

espère que cela fonctionne comme prévu.

+0

Je viens de le tester et il fonctionne exactement comme prévu. Merci beaucoup. Donc, les variables '$ mobile' et' $ tablet' devaient être à l'intérieur de la fonction, rétrospectivement, ce qui est parfaitement logique. Comment se fait-il que 'require_once' ne soit pas nécessaire? – morgyface

+1

Bien que cela fonctionne pour vous, "require_once" inclut en fait le fichier où la classe "Mobile_Detect" est écrite. – Tristup