Wenn wir ein Upgrade von 5.0.4 auf 5.1.1 durchführen, wird die Site nicht mehr geladen.
Die Fehlermeldung lautet
Fatal error: Uncaught Error: Call to a member function images_path() on null
/wp-content/themes/mytheme/header.php on line 49
Zeile 49 ist
<?php $theme->images_path(); ?>
darüber in der gleichen Datei ist
global $theme;
$ theme wird in functions.php als Instanz unseres benutzerdefinierten Themas erstellt.
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();
Ich weiß nicht, wie ich dieses Problem beheben soll. Vor dem Upgrade hat alles hervorragend funktioniert und es wurden keine weiteren Änderungen an der Site vorgenommen.
Jede Hilfe geschätzt.
theme-development
upgrade
BishopZ
quelle
quelle
global $lp_theme;
bevor Sie versuchen, es zu verwenden.Antworten:
Seit Changeset 44524 , das in WordPress 5.1 gelandet ist, ist die Variable
$theme
nun eine von WordPress festgelegte globale Variable, die auch nach dem Bootstrapping der Themes deaktiviert wird :Dies bedeutet, dass alle von Ihrem Thema festgelegten Werte ebenfalls nicht festgelegt werden.
Um den schwerwiegenden Fehler zu beheben, müssen Sie jetzt beispielsweise alle benannten Variablen
$theme
durch eine vorangestellte Version ersetzen$my_theme
. Das Präfixieren von Variablen und Funktionen im globalen Bereich wird als bewährte Methode angesehen, um solche Probleme zu vermeiden.quelle
Suchen Sie immer nach reservierten Begriffen und globalen Variablen, um mögliche Konflikte zu vermeiden.
Eine Übersicht finden Sie im WordPress Codex:
Hinweis: Diese Listen sind möglicherweise nicht immer zu 100% aktuell. Daher ist die Überprüfung der Version des von Ihnen verwendeten Quellcodes die einzige Möglichkeit, um 100% sicher zu sein.
quelle