我正在寻找一种根据php客户端的用户代理添加body类的方法。
我希望通过以下方式实现它:
page.php:
<body id="front" <?php ( function_exists ( \'body_class\' ) : body_class($classes) ? NULL ); ?> >
仅供参考:这样做的全部目的是嗅出特定的移动风格,并为一些移动用户代理禁用javascript。
p、 我不是在寻找一个移动插件
p、 另外,不,我对使用移动主题不感兴趣
我正在寻找一种根据php客户端的用户代理添加body类的方法。
我希望通过以下方式实现它:
page.php:
<body id="front" <?php ( function_exists ( \'body_class\' ) : body_class($classes) ? NULL ); ?> >
仅供参考:这样做的全部目的是嗅出特定的移动风格,并为一些移动用户代理禁用javascript。
p、 我不是在寻找一个移动插件
p、 另外,不,我对使用移动主题不感兴趣
可能是这样的:
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 - 根据Chip的建议,以下是使用WordPress用户代理检查的功能: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\');
WordPress包括存储这些用户代理的全局变量。也许是这样的:
<?php
global $is_iphone;
$classes = array();
if ( $is_iphone ) $classes[] = \'iphone\';
?>
<body id="front" <?php body_class( $classes ); ?>>
(你为什么要包装body_class()
在…内function_exists()
? 这个标签通常不需要向后兼容,因为它是在WordPress 2.8中引入的。)使用media queries. 如果根据用户代理更改输出,则必须禁止代理缓存,甚至在本地静态文件中缓存也将变得不必要。别忘了发送标题Vary: User Agent
– 这将slow down 您的站点在每个浏览器中的加载时间。
另请参见:How To Use CSS3 Media Queries To Create a Mobile Version of Your Website.
我刚刚从3.0升级到3.1.2,在WP Admin的Posts下的comments列中,每一行都会出现此错误:警告:number\\u format()要求参数1为双精度,字符串在/path/mysite/wp includes/functions中给出。php在线155有人能告诉我怎么解决这个问题吗?