I’m looking for a way to add body class depending on the User Agent of the client with php.
I’m looking to implement it this way:
page.php:
<body id="front" <?php ( function_exists ( 'body_class' ) : body_class($classes) ? NULL ); ?> >
Or by using adding it to the functions.php file
FYI: The whole purpose of this is to sniff out particular mobile styles and disable javascript for the some mobile user-agents.
p.s. I’m not looking for a mobile plugin.
p.p.s. no, i’m not interested in using a mobile theme.
3 Answers
something like this maybe:
function my_class_names($classes) {
$useragent = $_SERVER['HTTP_USER_AGENT'];
if(strchr($useragent,'Safari')) $classes[] = 'Safari';
// etc..
return $classes;
}
add_filter('body_class','my_class_names');
Edit – as per Chip’s suggestion, here’s the function using the WordPress useragents checks:
function my_class_names($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_winIE) $classes[] = 'winIE';
elseif($is_macIE) $classes[] = 'macIE';
elseif($is_opera) $classes[] = 'opera';
elseif($is_NS4) $classes[] = 'NS4';
elseif($is_safari) $classes[] = 'safari';
elseif($is_chrome) $classes[] = 'chrome';
elseif($is_iphone) $classes[] = 'iphone';
else $classes[] = 'other';
return $classes;
}
add_filter('body_class','my_class_names');