WP用户代理返回随机变量

时间:2016-09-30 作者:Grégoire Llorca

我使用PHP函数返回用户浏览器,使用WP全局变量。

它过去工作得很好,但最近它开始在Safari上做一些随机的事情。我使用chrome,家里一切都很好。我的同事使用Safari,根据测试结果,他会得到不同的结果。

在侧栏上。php:

<div class="sidebar s2 <?php echo \'s2_\'.detecter_user_agent(); ?>">
在函数中。php:

function detecter_user_agent() {
$cl = \'\';
global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_macIE, $is_winIE;

if($is_lynx) $cl = \'lynx\';
elseif($is_gecko) $cl = \'gecko\';
elseif($is_opera) $cl = \'opera\';
elseif($is_NS4) $cl = \'ns4\';
elseif($is_safari) $cl = \'safari\';
elseif($is_chrome) $cl = \'chrome\';
elseif($is_IE) $cl = \'ie\';
elseif($is_macIE) $cl = \'macie\';
elseif($is_winIE) $cl = \'winie\';
else $cl = \'unknown\';

return $cl;
}

这是为右侧边栏生成CSS类的代码https://blog.defi-ecologique.com

当我的同事尝试时,它有时会返回s2\\u chrome、s2\\u gecko甚至s2\\u unknown。

我不知道有多少读者有这个问题。

您能否帮助我确保在任何时候都返回正确的全局变量?

非常感谢。

1 个回复
SO网友:Rarst

您可以检查wp-includes/vars.php 用于在WordPress中实现对这些全局变量的嗅探的特定逻辑。

简而言之,检查是非常基本的,特别是考虑到用户代理嗅探本身就是一团混乱。

如果您需要一个更可靠的实现,那么您必须在其他地方找到一个(或者自己编写)。或者完全使用不同的技术,例如使用JavaScript检测必要的客户端上下文。