WordPress kívülről

Böngésző body class

Elsőre kicsit furcsának látszódhat a cím, de hamarosan fény derül a lényegre. Amikor WordPress weboldalt készítek ügyfeleimnek, az egyik nagyon fontos szempont, hogy minden böngésző alatt megfelelő böngészési élményt nyújtson az adott weboldal, tehát böngészőfüggetlen legyen. Azonban a tapasztalataim azt mutatják, hogy nem csak böngésző típusokban kell manapság gondolkozni, hanem már operációs rendszerekben is. Napokban futottam bele ugyanis abba a problémába, hogy azonos verziójú Firefox alatt eltérést mutatott egy Mac illetve egy Windows is. Hogy ezt a kicsiny eltérést, amely a weboldal mutatott, hogy kiküszöböljem legalább egy CSS osztályra volt szükségem, amelyet a body tag-re tettem.
Az alábbi kóddal meghatározhatjuk azt, amire éppen szükségünk van:

function mv_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';
			if(preg_match('/MSIE ([0-9]+)([a-zA-Z0-9.]+)/', $_SERVER['HTTP_USER_AGENT'], $browser_version))
			$classes[] = 'ie'.$browser_version[1];
		} else $classes[] = 'unknown';
		if($is_iphone) $classes[] = 'iphone';
		if ( stristr( $_SERVER['HTTP_USER_AGENT'],"mac") ) {
			 $classes[] = 'osx';
		   } elseif ( stristr( $_SERVER['HTTP_USER_AGENT'],"linux") ) {
  			 $classes[] = 'linux';
		   } elseif ( stristr( $_SERVER['HTTP_USER_AGENT'],"windows") ) {
			 $classes[] = 'windows';
		   }
		return $classes;
	}
	add_filter('body_class','mv_browser_body_class');

A sablon header.php fájl body részét, pedig az alábbi formában kell hogy módosítsuk.

<body <? body_class(); ?>>

Így már apróbb simításokat is el tudok végezni operációs rendszerre szűrve is, hiszen Firefox esetén osztálynak megkapom, hogy osx illetve gecko.