Zum Glück benötigt man als Web-Entwickler Browser-Weichen mittlerweile nicht mehr so oft wie früher. Trotzdem kommt es immer noch vor, dass Darstellungsunterschiede angepasst werden müssen. Mit diesen beiden Funktionen in der functions.php
lassen sich die wichtigsten Browser und Betriebssysteme als CSS-Klassen in den Body-Tag einbinden:
// Client-Eigenschaften bestimmen
function detect_client_properties()
{
// Client: Browser
if(!isset($_SESSION['CLIENT_BROWSER']))
{
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 7')) $browser='ie_7';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8')) $browser='ie_8';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 9')) $browser='ie_9';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 10')) $browser='ie_10';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') and strpos($_SERVER['HTTP_USER_AGENT'], 'rv:11')) $browser='ie_11';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome')) $browser='chrome';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'Safari')) $browser='safari';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox')) $browser='firefox';
else $browser=false;
if($browser) $_SESSION['CLIENT_BROWSER']=$browser;
else $_SESSION['CLIENT_BROWSER']=false;
}
// Client: Betriebssystem
if(!isset($_SESSION['CLIENT_OS']))
{
if(strpos($_SERVER['HTTP_USER_AGENT'], 'Macintosh')) $os='mac';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'Windows')) $os='win';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')) $os='ios';
elseif(strpos($_SERVER['HTTP_USER_AGENT'], 'iPad')) $os='ios';
else $os=false;
if($os) $_SESSION['CLIENT_OS']=$os;
else $_SESSION['CLIENT_OS']=false;
}
// Client: Mobile
if(!isset($_SESSION['CLIENT_IS_MOBILE']))
{
if(wp_is_mobile()) $_SESSION['CLIENT_IS_MOBILE']=true;
else $_SESSION['CLIENT_IS_MOBILE']=false;
}
}
add_action('init', 'detect_client_properties', 0);
// Body-CSS-Klassen ergänzen
function additional_body_classes($classes)
{
// Browser
if($_SESSION['CLIENT_BROWSER']) $classes[]=$_SESSION['CLIENT_BROWSER'];
// Betriebssystem
if($_SESSION['CLIENT_OS']) $classes[]=$_SESSION['CLIENT_OS'];
// Mobile
if($_SESSION['CLIENT_IS_MOBILE']) $classes[]='mobile';
return $classes;
}
add_filter('body_class', 'additional_body_classes', 99);
Auf ähnliche Weise lassen sich auch weitere CSS-Klassen im Body-Tag einfügen, zum Beispiel die aktuelle Sprache bei mehrsprachigen Websites oder aktuelle Kategorien, Templates, Parent-Seite usw.