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
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.

Patryk

CEO Webinsider.pl, a do tego CTO, CIO, CFO, CMO, CSO, COO i CRO ;-)
Pasjonat nowych technologii - od sprzętu po oprogramowanie, od serwerów po smartfony i rozwiązania IoT. Potencjalnie kiepski bloger, bo nie robi zdjęć "talerza" zanim zacznie jeść.

Dumny przyjaciel swoich psów :-)
Envato Elements - pobierasz co chcesz, ile chcesz
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!