当我今天将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)中声明
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;}
发布于 2012-06-22 19:51:58
明白了!
在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文件,并产生一个逻辑错误。
在WP3.4发布之前,没有明显的问题,因为vars.php中没有函数。但现在有了。
我认为wpml不需要包含这个文件,因为它已经包含在WordPress中了。
因此,可以这样绕过:"wp-content\plugins\sitepress-multilingual-cms\sitepress.php“中的注释21-24行
希望WPML能在下一个插件版本中更好地解决这个问题。
发布于 2012-06-15 14:59:54
由于看不到主题的代码,我猜您的functions.php包含如下函数声明:
function wp_is_mobile() {
// ... the code
}所以你需要做的就是包装这个函数,如下所示:
if (function_exists('wp_is_mobile')) {
function wp_is_mobile() {
// ... the code
}
}或者简单地去掉主题中的副本,并使用3.4中的版本。
我猜你的主题提供商会更新那个主题,这种冲突是令人讨厌的。这就是为什么鼓励主题开发人员在他们的函数前加上一些独特的东西。Prefix everything。
发布于 2012-06-16 00:40:03
这可能不是主题。在我的例子中是WPML插件,但函数包装完成了这项工作,即使修改核心WP文件并不理想……
不过,还是要感谢上面的建议!
https://stackoverflow.com/questions/11045908
复制相似问题