不是真的。
在WordPress中加载模板的任何内容最终都是include()
或require()
并且只有调用者函数作用域(当然还有全局作用域)中的变量才会传递到包含的文件:
function foo() {
$bar = 1;
include( \'/path/to/template.php\' );
}
$baz = 2;
foo();
// template.php:
echo $bar; // 1
echo $baz; // undefined
因此,要使您所描述的工作正常,您必须更改Core的行为
load_template()
执行实际
require()
. 但还有其他方法。以下是一些:
全局范围(没有人喜欢全局范围):
$GLOBALS[\'myvar\'] = 1; // will be accessible from anywhere
静态类属性:
class My_Class {
public static $myvar;
}
My_Class::$myvar = 1;
My_Class::$myvar
如果在加载模板之前声明了类并更改了静态变量,则可以在模板中访问。这几乎就像使用全局范围,但更干净。
希望有帮助!