首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误:无法重新声明wp_is_mobile()

致命错误:无法重新声明wp_is_mobile()
EN

Stack Overflow用户
提问于 2012-06-15 14:51:37
回答 4查看 3.4K关注 0票数 5

当我今天将wordpress更新到最新版本时,我得到了这个致命的错误。我使用的几乎是公司主题。126行是代码中的最后一行。有人知道这是什么吗?主题确实有一个响应式的设计。

http://themeforest.net/item/barely-corporate-responsive-wordpress-theme/93069?WT.ac=search_item&WT.seg_1=search_item&WT.z_author=ThemeBlvd

致命错误:无法重新声明wp_is_mobile() (先前在/home/chilinbk/public_html/kunde/tkh/wp-includes/vars.php的第126行的/home/chilinbk/public_html/kunde/tkh/wp-includes/vars.php:107)中声明

代码语言:javascript
复制
if ( isset($is_mobile) )
    return $is_mobile;

if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
    $is_mobile = false;
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
    || strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
        $is_mobile = true;
} else {
    $is_mobile = false;
}

return $is_mobile;

}

EN

回答 4

Stack Overflow用户

发布于 2012-06-22 19:51:58

明白了!

在wp-content\plugins\sitepress-multilingual-cms\sitepress.php,中,有以下几行

代码语言:javascript
复制
if ( function_exists('is_multisite') && is_multisite() ) {
    include_once( ABSPATH . WPINC . '/vars.php' );
}

这些行包括文件/wp-includes/vars.php,其中声明了函数wp_is_mobile()。然后WordPress再次包含该vars.php文件,并产生一个逻辑错误。

在WP3.4发布之前,没有明显的问题,因为vars.php中没有函数。但现在有了。

我认为wpml不需要包含这个文件,因为它已经包含在WordPress中了。

因此,可以这样绕过:"wp-content\plugins\sitepress-multilingual-cms\sitepress.php“中的注释21-24行

希望WPML能在下一个插件版本中更好地解决这个问题。

票数 4
EN

Stack Overflow用户

发布于 2012-06-15 14:59:54

由于看不到主题的代码,我猜您的functions.php包含如下函数声明:

代码语言:javascript
复制
function wp_is_mobile() {
   // ... the code
}

所以你需要做的就是包装这个函数,如下所示:

代码语言:javascript
复制
if (function_exists('wp_is_mobile')) {
    function wp_is_mobile() {
       // ... the code
    }
}

或者简单地去掉主题中的副本,并使用3.4中的版本。

我猜你的主题提供商会更新那个主题,这种冲突是令人讨厌的。这就是为什么鼓励主题开发人员在他们的函数前加上一些独特的东西。Prefix everything

票数 2
EN

Stack Overflow用户

发布于 2012-06-16 00:40:03

这可能不是主题。在我的例子中是WPML插件,但函数包装完成了这项工作,即使修改核心WP文件并不理想……

不过,还是要感谢上面的建议!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11045908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档