Utilisation appropriée de wp_is_mobile ()?

18

J'ai développé un thème réactif et je souhaite le soumettre sur wordpress.org . Avant de le soumettre, je veux l'utiliser wp_is_mobile()dans mon thème, mais selon Function Reference / wp est mobile, c'est une mauvaise idée car il dit ceci:

Vous devez savoir que cela ne détecte pas spécifiquement un téléphone mobile, car une tablette est considérée comme un appareil mobile. Vérifiez la zone Plugins pour plusieurs alternatives utiles. Il ne doit pas non plus être utilisé pour les thèmes.

Donc, si je l'utilise dans mon thème functions.php comme ceci:

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;
}

Mon thème sera-t-il rejeté?

Sous-question:

Si j'utilise ma fonction comme dans le code ci-dessus et que j'utilise des plugins de mise en cache comme (WP Super Cache) ma fonction sera-t-elle foirée (échec d'exécution ou retour de faux positifs)?

Merci pour votre temps et vos réponses ...

Dejo Dekic
la source
1
Ils disent, nous avons cette fonction, mais ne l'utilisez pas, car elle n'est pas bonne - c'est complètement ironique. Je ne sais pas si votre thème serait rejeté pour son utilisation, mais si c'est le cas, cela augmenterait l'ironie au maximum. Après tout, c'est une fonction WP et non obsolète.
Nicolai
3
La vraie question est pourquoi vous voulez ajouter la classe mobile / desktop?
TheDeadMedic
1
Ce que @TheDeadMedic dit est vrai, vous pouvez travailler avec des requêtes multimédia CSS par exemple.
Nicolai
1
wp_is_mobile()n'est rien de plus qu'une blague et n'est vraiment pas fiable. Il repose sur le côté utilisateur qui peut être manipulé par l'utilisateur final. Vous devez savoir que votre fonctionnalité échouera dans plus de 10% des cas, donc une grande quantité d'utilisateurs mobiles seront hébergés sur le bureau, qu'ils le veuillent ou non ou que vous ne le vouliez pas
Pieter Goosen
4
Il est donc là et est nul comme query_posts ();
Dejo Dekic

Réponses:

31

En termes très simples, ce wp_is_mobile()n'est pas pour styliser votre thème.

Comment cela fonctionne: il correspond à une partie du nom natif du périphérique dans la chaîne de l'agent utilisateur. Donc, si quelqu'un manipule la chaîne et envoie de fausses informations, vous ne pouvez pas détecter de quel appareil il s'agit. Et il ne renvoie aucun nom d'appareil, il suffit de le retourner truesi vous n'êtes pas sur le bureau autrementfalse

Comment WordPress l'utilise: WordPress ne l'utilise pas pour styliser ou ajouter du CSS n'importe où. WordPress l'utilise pour ajouter ou manipuler des choses qui ne devraient être que sur des appareils mobiles (indépendamment de la taille et du nom.) Par exemple pour ajouter des scripts tactiles, ajouter une fenêtre d'affichage, une classe mobile dans l'en-tête d'administration, ajouter des boutons mobiles.

Effet de la mise en cache : si vous utilisez un plugin de mise en cache, il est inutile. Comme votre code n'est pas exécuté à chaque fois, vous obtenez le même résultat à chaque fois.

WordPress l'utilise principalement en back-end et presque tous les plug-ins de mise en cache excluent la mise en cache en back-end ou, par exemple, pour les utilisateurs connectés. Donc ça marche bien.

Sumit
la source
1

wp_is_mobile()est lié à HTTP USER AGENT, il n'est pas lié à la taille de l'écran

wp_is_mobile retourner vrai ou faux basé sur $_SERVER['HTTP_USER_AGENT']

si $_SERVER['HTTP_USER_AGENT']contient Mobile (Android ou BlackBerry, etc.),

wp_is_mobilerenvoie ensuite - vrai (détecté comme un appareil mobile), sinon il reviendrafalse

un cas d'utilisation simple - pour créer un lien, essayez de naviguer vers une application mobile ou une page Web.

pour plus d'informations, vérifiez le code source de la fonction

bhv
la source