IPad von wp_is_mobile ausgeschlossen

Ich erlebe ein sehr nerviges Problem. Ich baute meine Website mit Medienabfragen und is_mobile (denke, is_mobile wäre das gleiche wie kleinere Bildschirme. Wie dumm von mir.) Aber nach einigen Tests vermasselt anscheinend das iPad Art es (okay, tatsächlich tat ich).

Alle meine Probleme könnten leicht getriggers werden, wenn ich ein iPad von der wp_is_mobile function ausschließen könnte. Wie schreibe ich diese function um?

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

Wie würde ich das ändern?

Solutions Collecting From Web of "IPad von wp_is_mobile ausgeschlossen"

Die Antwort von tf brachte mich zum Nachdenken. Eigentlich kann ich die corefunktion verwenden und anpassen, wie es mir gefällt, aber einfach alles in eine neue function bringen. Also hier geht es:

 function my_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'], '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; } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false && strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') == false) { $is_mobile = true; } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false) { $is_mobile = false; } else { $is_mobile = false; } return $is_mobile; } 

Sie können auch die regelmäßig aktualisierte Mobile Detect PHP-class verwenden , um eine benutzerdefinierte function zum Erkennen von Mobiltelefonen außer Tablets (also iPads) zu erstellen. Zum Zeitpunkt der Erstellung dieser Antwort war das Github-Repo zuletzt aktualisiert worden, um die Erkennung für neue Samsung-Tablets vor 3 Monaten einzuschließen.

Angenommen, Sie platzieren die erforderliche Datei im Verzeichnis /includes/ in Ihrem Design, dann können Sie diesen Code zu Ihrer functions.php hinzufügen

 require_once(get_template_directory() . '/includes/Mobile_Detect.php'); function md_is_mobile() { $detect = new Mobile_Detect; if( $detect->isMobile() && !$detect->isTablet() ){ return true; } else { return false; } } 

Verwenden Sie dann die function md_is_mobile() als Ersatz für wp_is_mobile() .

Ich habe deine function ein wenig umgeschrieben (und meiner Meinung nach optimiert):

 function wp_is_mobile() { static $is_mobile; if (isset($is_mobile)) return $is_mobile; if ( ! empty($_SERVER['HTTP_USER_AGENT']) // bail out, if iPad && false === strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') // all the other mobile stuff && ( false !== strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') || false !== 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') ) ) $is_mobile = true; else $is_mobile = false; return $is_mobile; } 

// BEARBEITEN:

Okay, noch einmal …

Schreiben Sie eine neue function, die die corefunktion intern verwendet und erweitert :

 function my_wp_is_mobile() { if ( ! empty($_SERVER['HTTP_USER_AGENT']) // bail out, if iPad && false !== strpos($_SERVER['HTTP_USER_AGENT'], 'iPad') ) return false; return wp_is_mobile(); } // function my_wp_is_mobile 

Jetzt können Sie Ihre neue my_wp_is_mobile function überall verwenden, wo Sie möchten.