Jak rozpoznawać przeglądarkę i dodawać jej nazwę jako klasę w WordPressie?
- Poziom trudności:
Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:
Projektując szablon warto pamiętać o podstawowych możliwościach jakie daje nam mechanizm WordPressa. W zasadzie nie trzeba szukać specjalnych metod rozpoznawania przeglądarki z której korzysta użytkownik, bo mechanizm podstawowy zapewne działa na Twojej stronie. Wystarczy dodać fragment kodu, który dopisze odpowiednią klasę i pozwoli się do niej odwołać w kodzie CSS.
Na początek kilka podstawowych faktów. Body Class (body_class) to standardowa funkcja na WordPressie, której wywołanie można znaleźć w prawie każdym pliku header.php. Jeśli Twój szablon nie posiada takiego elementu wystarczy, że podmienisz:
<body>
na:
<body <?php body_class($class); ?>>
Dodanie tej funkcji do znacznika <body> znacznie rozbudowuje ten znacznik. Wystarczy, że skorzystasz z podglądu źródła strony i okaże się, że do body zostały dopisane przykładowo takie klasy jak: „home blog logged-in admin-bar customize-support” i być może także inne. W zależności od rodzaju strony WordPress sam umieści w <body> właściwe klasy. Przykładowo jeśli jesteś na stronie głównej to możesz być pewien, że zostanie dodana klasa „home”, a gdy otworzysz statyczną stronę, wtedy pojawi się tam klasa „page”.
Poniżej znajdziesz spis klas, które WordPress może dodać:
.rtl {} .home {} .blog {} .archive {} .date {} .search {} .paged {} .attachment {} .error404 {} .single postid-(id) {} .attachmentid-(id) {} .attachment-(mime-type) {} .author {} .author-(nazwa-uzytkownika) {} .category {} .category-(slug) {} .tag {} .tag-(slug) {} .page-parent {} .page-child parent-pageid-(id) {} .page-template page-template-(nazwa szablonu) {} .search-results {} .search-no-results {} .logged-in {} .paged-(page number) {} .single-paged-(numer strony) {} .page-paged-(numer strony) {} .category-paged-(numer strony) {} .tag-paged-(numer strony) {} .date-paged-(numer strony) {} .author-paged-(numer strony) {} .search-paged-(numer strony) {}
Teraz wystarczy drobna modyfikacja aby oprócz standardowych klas zostały dodane klasy odpowiadające otwieranej przeglądarce. Aby to zrobić musisz wejść do pliku functions.php i dopisać w obrębie PHP następujący kod:
add_filter('body_class','browser_body_class'); function browser_body_class($classes) { global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone; if($is_lynx) $classes[] = 'lynx'; elseif($is_gecko) $classes[] = 'gecko'; elseif($is_opera) $classes[] = 'opera'; elseif($is_NS4) $classes[] = 'ns4'; elseif($is_safari) $classes[] = 'safari'; elseif($is_chrome) $classes[] = 'chrome'; elseif($is_IE) $classes[] = 'ie'; else $classes[] = 'unknown'; if($is_iphone) $classes[] = 'iphone'; return $classes; }
Teraz możesz przy pomocy tej metody dopisać do pliku style.css (sekcja Wygląd -> Edytor) przykładowo
.ie #nav {jeśli potrzebujesz dokonać poprawek wartości padding lub margin - tu wpisz swój kod CSS}
Możesz także dostosowywać różne elementy witryny pod użytkowników określonych przeglądarek np. prowadząc sklep internetowy z elektroniką dodać dodatkowy banner reklamowy z akcesoriami Apple widoczny tylko dla tych, którzy otworzą Twoją stronę w przeglądarce Safari.
Pomogłem rozwiązać Twój problem? Wspieraj moje działania bym pisał więcej:
Komentarze — Napisz pierwszy komentarz
Czy powyższe wskazówki były skuteczne? Jeśli tak, podziel się swoimi spostrzeżeniami w komentarzu. Gdybyś chciał się podzielić ze mną skrawkiem kodu aby uzupełnić minikurs to skorzystaj z portalu pastebin.com i wyślij linka do kodu. Instrukcje jak to zrobić znajdziesz tutaj.