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

时间:2012-06-15 06:51:37

标签: wordpress fatal-error

当我今天将wordpress更新到最新版时,我遇到了这个致命的错误。我使用Barely Corporate主题。 第126行是代码中的最后一行。有谁知道这是什么?主题确实有响应式设计。

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

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

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;

}

4 个答案:

答案 0 :(得分:4)

知道了!

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

if ( function_exists('is_multisite') && is_multisite() ) {
    include_once( ABSPATH . WPINC . '/vars.php' );
}

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

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

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

所以旁路可以是:在" wp-content \ plugins \ sitepress-multilingual-cms \ sitepress.php"

中注释第21-24行

希望WPML可以在下一个插件版本中更加明确地修复它。

答案 1 :(得分:2)

无法看到主题的代码,我猜你的functions.php包含这样的函数声明:

function wp_is_mobile() {
   // ... the code
}

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

if (function_exists('wp_is_mobile')) {
    function wp_is_mobile() {
       // ... the code
    }
}

或者直接删除主题中的副本并使用3.4中的版本。

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

答案 2 :(得分:1)

它可能不是主题。在我的情况下是WPML插件,但功能包装完成了工作,即使修改核心WP文件不理想...

感谢上面的建议!

答案 3 :(得分:1)

一旦我在WP 3.4上安装了WPML插件2.5.1,我遇到了同样的问题,所以我包装了该函数,并且摆脱了该错误,然后又出现了另一个错误。

致命错误:在第1606行的/home/MY_USERNAME/public_html/wp-includes/theme.php中调用未定义的函数wp_is_mobile()

我不知道下一步该做什么?

--------找到了一个工作---------

只要您不在WP多站点安装上以超级管理员的身份激活WPML插件,我就不会收到错误。独立激活它们。

如果网络激活可行,那仍然会很好。 WPML表示它是多站点兼容的:http://wpml.org/documentation/support/multisite-support/