当我们从5.0.4升级到5.1.1时,站点停止加载。
错误消息为
Fatal error: Uncaught Error: Call to a member function images_path() on null
/wp-content/themes/mytheme/header.php on line 49
第49行是
<?php $theme->images_path(); ?>
在同一文件中,它的上方是global $theme;
$主题在函数中创建。php作为自定义主题的实例。
class MyTheme {
private $theme_name = "MyTheme";
private $scripts_version = \'0.90\';
function __construct() {
add_action(\'init\', array($this, \'init_assets\'));
...several of these
...more methods
}
}
...other stuff
$theme = new MyTheme();
我不知道如何解决这个问题。在升级之前,一切都很好,没有对站点进行其他更改。
感谢您的帮助。
最合适的回答,由SO网友:ocean90 整理而成
自从Changeset 44524, 已登录WordPress 5.1,变量$theme
现在是WordPress设置的全局变量,该变量也会被取消设置after the themes have been bootstrapped:
// Load the functions for the active theme, for both parent and child theme if applicable.
foreach ( wp_get_active_and_valid_themes() as $theme ) {
if ( file_exists( $theme . \'/functions.php\' ) ) {
include $theme . \'/functions.php\';
}
}
unset( $theme );
这意味着主题设置的任何值也会被取消设置。
要修复致命错误,现在必须替换所有名为$theme
例如,带有前缀的版本$my_theme
. 在全局范围内为变量和函数添加前缀被认为是避免此类问题的最佳做法。