首页 文章

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

提问于
浏览
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

致命错误:无法重新声明wp_is_mobile()(之前在/home/chilinbk/public_html/kunde/tkh/wp-includes/vars.php:107中声明)/ home / chilinbk / public_html / kunde / tkh / wp-includes / vars第126行的.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 回答

  • 4

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

    感谢上面的建议!

  • 1

    得到它了!

    在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

    无法看到你主题的代码,我猜你的 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

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

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

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

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

    只要你没有网络激活WPML插件作为WP多站点安装的超级管理员,那么我不会得到错误 . 独立激活它们 .

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

相关问题