Tworzysz stronę internetową i potrzebujesz pomocy?

Właśnie skończyłem prace nad jednym z modułów projektu, nad którym pracuję, a w którym to module ważna jest funkcja „wyłapywania” urządzeń mobilnych (głównie telefony, tablety z racji większego ekranu nie były już tak istotne). Operację taką w PHP można wykonać choćby za pomocą funkcji preg_match(), która może wyłapywać – po słowach kluczowych w nagłówku HTTP_USER_AGENT – przeglądarkę/system, i na bazie spróbować rozpoznać, czy mamy do czynienia z urządzeniem mobilnym. Jest to dość skuteczna metoda, tyle tylko, że wymaga ciągłego śledzenia „rynku przeglądarek mobilnych”, co w tym przypadku nie wchodzi(ło) w grę. Dlatego postanowiłem skorzystać z gotowca. A właściwie, to 2 gotowców…

Wykrywanie urządzeń mobilnych w PHP

Bibliotek pozwalających z poziomu PHP (spróbować) wykryć, czy mamy do czynienia z urządzeniem mobilnym jest przynajmniej kilka, ja zdecydowałem się na Mobile Detect (Serban Ghiţă), bo już kiedyś z niej korzystałem, i wiem, że sprawdza się całkiem nieźle, a do tego jest dość regularnie aktualizowana (co ważne, bo opiera się m.in. na funkcji preg_match()).

Wystarczy pobrać z GitHuba kod i dołączyć go do swojego projektu, dodając do pliku PHP taki kod:

require_once '/ścieżka-do-plików/mobile-detect/Mobile_Detect.php';
$detect = new Mobile_Detect;

W tym momencie możemy w prosty sposób sprawdzić, czy mamy do czynienia z urządzeniem mobilnym i wykonać (lub nie) odpowiedni kod:

if ( $detect->isMobile() ) {
	// Kod do wykonania, gdy jest to urządzenie mobilne
} else {
	// Kod do wykonania, gdy nie jest to urządzenie mobilne
}

Możemy też sprawdzać, czy mamy do czynienia z tabletem:

if ( $detect->isTablet() ) {
	// Kod do wykonania, gdy jest to tablet
} else {
	// Kod do wykonania, gdy nie jest to tablet
}

W przypadku, gdy chcemy nasze działania zawęzić tylko do telefonów, wykluczając tablety, musimy najpierw wykryć, czy mamy do czynienia z urządzeniem mobilnym, i jeśli tak, to czy nie jest to tablet (tak autor skryptu/biblioteki to sobie wymyślił):

if ( $detect->isMobile() && !$detect->isTablet() ) {
	// Kod do wykonania, gdy jest to telefon
} else {
	// Kod do wykonania, gdy nie jest to telefon
}

Można też wszystko połączyć np. w taki kod:

if ( $detect->isMobile() ) {
	// Kod do wykonania, gdy jest to dowolne urządzenie mobilne
} elseif ( $detect->isTablet() ) {
	// Kod do wykonania, gdy jest to tablet
} elseif ( $detect->isMobile() && !$detect->isTablet() ) {
	// Kod do wykonania, gdy jest to telefon
} else {
	// Kod do wykonania, gdy nie jest to urządzenie mobilne
}

Jak widać, korzystanie z biblioteki jest proste, i z doświadczenia wiem, że dość skuteczne, choć oczywiście może się zdarzyć, że jakieś bardziej egzotyczne urządzenie z jakąś egzotyczną przeglądarką (lub taką, co przesyła „niepoprawny” nagłówek) się prześliźnie. Biblioteka umożliwia też wykrywanie konkretnych urządzeń, przeglądarek, czy systemów operacyjnych, ale z tym odsyłam już do dokumentacji i podanych tam przykładów…

Wykrywanie urządzeń mobilnych w WordPressie

W otwierającym ten poradnik akapicie wspomniałem, że zdecydowałem się skorzystać z 2 gotowców. Pierwszym jest opisana powyżej biblioteka (klasa) Mobile Detect. Drugim gotowcem jest sam WordPress, który posiada wbudowaną funkcję wp_is_mobile(), dzięki której można (spróbować) wykryć, że mamy do czynienia z urządzeniem mobilnym (telefon lub tablet):

if ( wp_is_mobile() ) {
	// Kod do wykonania, gdy jest to urządzenie mobilne
} else {
	// Kod do wykonania, gdy nie jest to urządzenie mobilne
}

Nie jest to może rozwiązanie tak rozbudowane jak Mobile Detect, ale w wielu zastosowaniach powinno być wystarczające, i co najwazniejsze – wbudowane w WordPressa, a więc nie wymaga instalacji żadnych dodatkowych wtyczek (choć takowe oczywiście też są).

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Tworzysz stronę internetową i potrzebujesz pomocy?
Patryk
Kurs "WordPress: Pierwsze kroki" (na dobry początek)