5

今天我将 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-includes/vars 中重新声明 wp_is_mobile()(之前在 /home/chilinbk/public_html/kunde/tkh/wp-includes/vars.php:107 中声明) .php 在第 126 行

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

4 回答 4

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 可以在下一个插件版本中更恰当地修复它。

于 2012-06-22T11:51:57.743 回答
2

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

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

因此,您需要做的是包装该函数,如下所示:

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

或者干脆撕掉主题中的副本并使用 3.4 中的版本。

我猜您的主题提供商会更新该主题,这种冲突很讨厌。这就是为什么主题开发者被鼓励在他们的功能前加上一些独特的东西。前缀一切

于 2012-06-15T06:59:54.363 回答
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/

于 2012-06-21T17:47:58.313 回答
1

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

不过感谢上面的建议!

于 2012-06-15T16:40:02.900 回答