Prawidłowe użycie wp_is_mobile ()?

18

Opracowałem responsywny motyw i chcę go przesłać na wordpress.org . Przed przesłaniem go chcę użyć wp_is_mobile()w moim motywie, ale zgodnie z funkcją Reference Reference / wp jest mobilny , jest to zły pomysł, ponieważ mówi:

Należy zdawać sobie sprawę, że nie wykrywa to specjalnie telefonu komórkowego, ponieważ tablet jest uważany za urządzenie mobilne. Sprawdź w obszarze Wtyczki kilka pomocnych alternatyw. Nie należy go także używać do motywów.

Więc jeśli użyję tego w moich funkcjach theme.php, to:

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

Czy mój motyw zostanie odrzucony?

Podpytanie:

Jeśli użyję mojej funkcji jak w powyższym kodzie i użyję Caching Plugins, takich jak (WP Super Cache), czy moja funkcja zostanie pomieszana (nie wykonała się lub nie zwróciła fałszywych alarmów)?

Dziękujemy za poświęcony czas i odpowiedzi ...

Dejo Dekic
źródło
1
Mówią, że mamy tę funkcję, ale nie używaj jej, ponieważ nie jest dobra - jakże ironiczna. Nie wiem, czy Twój motyw zostałby odrzucony za jego użycie, ale jeśli tak, to zwiększyłoby ironię do maksimum. W końcu jest to funkcja WP i nie jest przestarzała.
Nicolai
3
Prawdziwe pytanie brzmi: dlaczego chcesz dodać klasę mobilną / stacjonarną?
TheDeadMedic
1
To, co mówi @TheDeadMedic, jest prawdą, możesz na przykład pracować z zapytaniami o media CSS .
Nicolai
1
wp_is_mobile()jest naprawdę żartem i jest naprawdę zawodny. Opiera się na stronie użytkownika, którą może manipulować użytkownik końcowy. Musisz wiedzieć, że Twoja funkcjonalność nie powiedzie się w ponad 10% przypadków, więc duża liczba użytkowników mobilnych zostanie pozbawiona treści na komputery, niezależnie od tego, czy im się to podoba, czy nie
Pieter Goosen
4
Tak więc jest i jest do bani, tak jak query_posts ();
Dejo Dekic,

Odpowiedzi:

31

W bardzo laikańskim znaczeniu wp_is_mobile()nie oznacza stylizowania motywu.

Jak to działa: pasuje do natywnej nazwy urządzenia w Ciągu agenta użytkownika. Jeśli więc ktoś manipuluje ciągiem i wysyła fałszywe informacje, nie można wykryć, jakie to urządzenie. I nie zwraca żadnej nazwy urządzenia, tylko zwraca, truejeśli nie korzystasz z innego komputerafalse

Jak WordPress go używa: WordPress nie może go używać do stylizacji ani dodawania CSS w dowolnym miejscu. WordPress używa go do dodawania lub manipulowania rzeczami, które powinny być tylko na urządzeniach mobilnych (niezależnie od rozmiaru i nazwy). Np. Do dodawania skryptów dotykowych, dodawania okienka, klasy mobilnej w nagłówku administratora, dodawania przycisków mobilnych.

Efekt buforowania : Jeśli używasz wtyczki buforowania, jest to bezużyteczne. Ponieważ kod nie jest wykonywany za każdym razem, za każdym razem otrzymujesz ten sam wynik.

WordPress używa go głównie na zapleczu i prawie każda wtyczka buforująca wyklucza buforowanie na zapleczu lub powiedz dla zalogowanego użytkownika. Więc działa dobrze.

Sumit
źródło
1

wp_is_mobile()jest związany z HTTP USER AGENT, nie jest związany z rozmiarem ekranu

wp_is_mobile zwraca wartość true lub false na podstawie $_SERVER['HTTP_USER_AGENT']

jeśli $_SERVER['HTTP_USER_AGENT']zawiera Mobile (Android lub BlackBerry itp.),

następnie wp_is_mobilezwraca - true (wykryty jako urządzenie mobilne), jeśli nie, to zwrócifalse

prosty przypadek użycia - aby utworzyć link, spróbuj przejść do aplikacji mobilnej lub strony internetowej.

po więcej informacji sprawdź kod źródłowy funkcji

bhv
źródło