Mam bardzo irytujący problem. Zbudowałem swoją stronę internetową z zapytaniami medialnymi i is_mobile (myślenie, że is_mobile byłoby tym samym, co mniejsze ekrany. Co za głupie z mojej strony), ale po kilku testach najwyraźniej iPad trochę to zepsuł (dobrze, właściwie to zrobiłem).
Wszystkie moje problemy można łatwo rozwiązać, gdybym mógł wykluczyć iPada z funkcji wp_is_mobile. Jak przepisać tę funkcję?
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;
}
Jak bym to zmienić?
===
, czy powinienem!==
zamiast tego sprawdzić - nie mam pojęcia, jak to się stało, ale teraz to naprawiłem. Tak więc powyższa odpowiedź również powinna zadziałać - czego absolutnie nie mówię, abyś ją zaakceptował! Po prostu nasze odpowiedzi / funkcje są w zasadzie takie same - więc chciałem tylko znaleźć (i naprawić) to, co było nie tak.Możesz także użyć regularnie aktualizowanej klasy Mobile Detect PHP, aby utworzyć niestandardową funkcję wykrywania telefonów komórkowych z wyłączeniem tabletów (a więc iPadów). W momencie pisania tej odpowiedzi repozytorium Github zostało ostatnio zaktualizowane, aby zawierało wykrywanie nowych tabletów Samsung 3 miesiące temu.
Zakładając, że umieścisz wymagany plik w katalogu o nazwie
/includes/
w swoim motywie, możesz dodać ten kod do pliku functions.phpnastępnie użyj funkcji
md_is_mobile()
jako zamiennikawp_is_mobile()
.źródło
Wiem, że to jest stare, ale chciałem go zaktualizować o właściwy sposób implementacji poprzednich rozwiązań przez WordPress. Począwszy od wersji 4.9.0, zamiast implementować inną funkcję, powinni filtrować wynik wp_is_mobile (). A zatem:
JEDNAK tak naprawdę należało było ugryźć kulę i przepisać motyw, aby działał poprawnie na tabletach. Było / jest więcej producentów tabletów niż Apple.
źródło
Przepisałem (i moim zdaniem zoptymalizowałem) nieco twoją funkcję:// EDYTOWAĆ:
Okej, jeszcze raz ...
Napisz nową funkcję, która wewnętrznie korzysta z funkcji podstawowej i rozszerz ją:
Teraz możesz korzystać z nowej
my_wp_is_mobile
funkcji w dowolnym miejscu.źródło
functions.php
pliku. Zaktualizuję swoją odpowiedź za minutę ...wp_is_mobile
...? Co więc nie działa (tak jak chcesz)?if(!my_wp_is_mobile() )
z paska bocznego, nadal nie jest wyświetlany. Z czego wywnioskuję, że funkcja nie działa.