У меня есть плагин, который объявлен и подключен в соответствии с рекомендациями, описанными в этом связанном вопросе:
Wordpress: Доступ к функции плагина из темы
Так что это выглядит (платонически) так:
if ( !class_exists( 'Foo' ) ) {
class Foo {
...
public function do_stuff() {
// does stuff
}
}
}
if ( class_exists( 'Foo' ) ) {
$MyFoo = new Foo();
}
Теперь, если я вызову $ MyFoo-> do_stuff () из файла темы, такого как, скажем, single.php, на самом деле $ MyFoo did_stuff и я вижу вывод на странице.
Однако, если я напишу функцию в functions.php, которая хочет вызвать $ MyFoo-> do_stuff (), а затем вызвать эту функцию из single.php объект не найден.В итоге,
Работает:
in themes/my_theme/single.php:
if (isset($MyFoo))
$MyFoo->do_stuff();
Не работает:
in themes/my_theme/functions.php:
function do_some_foo_stuff() {
...
if (isset($MyFoo)) {
$MyFoo->do_stuff();
} else {
echo "no MyFoo set";
}
...
}
themes/my_theme/single.php:
if (isset($MyFoo))
do_some_foo_stuff();
Выходы -> «no MyFoo set»
Это может бытьСовершенно неудивительно, но это то, что мне нужно / я хочу работать, поэтому, если кто-нибудь сможет объяснить, что происходит, это будет оценено.Почему файл функций темы (или другие файлы плагинов в mu-плагинах) не может найти объект $ MyFoo?