Je rencontre un problème très ennuyeux. J'ai construit mon site Web avec des requêtes multimédias et is_mobile (penser que is_mobile serait le même que des écrans plus petits. Quelle bêtise de ma part.) Mais après quelques tests, apparemment, l'iPad le visse (d'accord, en fait, je l'ai fait).
Tous mes problèmes pourraient facilement être résolus si je pouvais exclure un iPad de la fonction wp_is_mobile. Comment réécrire cette fonction?
function wp_is_mobile() {
static $is_mobile;
if ( isset($is_mobile) )
return $is_mobile;
if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
$is_mobile = false;
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
$is_mobile = true;
} else {
$is_mobile = false;
}
return $is_mobile;
}
Comment pourrais-je changer cela?
===
alors que j'aurais dû vérifier à la!==
place - je ne sais pas comment cela s'est produit, mais maintenant je corrige cela. Donc, la réponse ci-dessus devrait également fonctionner - ce que je ne dis absolument pas pour vous faire accepter! C'est juste que, essentiellement, nos réponses / fonctions font la même chose - donc je voulais juste trouver (et corriger) ce qui n'allait pas.Vous pouvez également utiliser la classe PHP Mobile Detect régulièrement mise à jour pour créer une fonction personnalisée de détection des mobiles à l'exclusion des tablettes (donc des iPads). Au moment de la rédaction de cette réponse, le dépôt Github avait été mis à jour le plus récemment pour inclure la détection des nouvelles tablettes Samsung il y a 3 mois.
En supposant que vous placez le fichier requis dans le répertoire appelé
/includes/
dans votre thème, vous pouvez alors ajouter ce code à vos fonctions.phppuis utilisez la fonction
md_is_mobile()
comme substitut dewp_is_mobile()
.la source
Je sais que c'est vieux, mais je voulais le mettre à jour avec la bonne façon WordPress de mettre en œuvre les solutions précédentes. À partir de la version 4.9.0, plutôt que d'implémenter une autre fonction, ils devraient filtrer le résultat de wp_is_mobile (). Donc:
CEPENDANT Ce qui aurait vraiment dû être fait était de mordre la balle et de réécrire le thème pour qu'il fonctionne correctement sur les tablettes. Il y avait / il y a plus de fabricants de tablettes qu'Apple.
la source
J'ai réécrit (et, à mon avis, optimisé) un peu votre fonction:// ÉDITER:
D'accord, encore une fois ...
Écrivez une nouvelle fonction qui utilise en interne la fonction principale et étendez -la:
Vous pouvez maintenant utiliser votre nouvelle
my_wp_is_mobile
fonction où vous le souhaitez.la source
functions.php
fichier. Je mettrai à jour ma réponse dans une minute ...wp_is_mobile
...? Alors, qu'est-ce qui ne fonctionne pas (comme vous aimeriez le faire)?if(!my_wp_is_mobile() )
la barre latérale, elle n'est toujours pas affichée. D'où je déduis que la fonction ne fonctionne pas.