我定义了一个变量,我们称之为$header\\u var,它放在标题中。php文件。我希望将此变量传递到我的模板文件(在本例中为taxonomy.php)。
global
这不是一种非常推荐的方法,但如果使用得当,它会起作用:将其放在前面,以便在中定义变量header.php
and again 在中检索变量之前taxonomy.php
(调用get\\u header()以包括header.php
)
// in header.php
global $header_var;
$header_var = \'A value\';
// in taxonomy.php
get_header();
global $header_var;
echo $header_var; // \'A value\'
我希望能够以另一种方式进行同样的操作,比如从我的分类法中传递一个$template\\u var。php到标题。php。这是可能的,因为在加载头之后没有声明变量吗?
这是PHP,不是魔法,也不是时间机器:时间规则适用于WordPressthe rest of the universe.
所以,不,您不能将变量传递回时间,但通常在模板中,您包括header.php
通过调用get_header()
所以如果你设置一个变量before 调用该函数,全局技巧也会起作用:
// in header.php
global $template_var;
echo $template_var; // \'A value\'
// in taxonomy.php
global $template_var;
$template_var = \'A value\'
get_header();
但是,如果您需要在中共享变量
header.php
对于模板,最好不要在页眉或模板中声明它们,而是在
functions.php
使用
action hooks 控制何时必须声明变量。
一个有用的钩子是\'template_redirect\'
您可以访问当前查询,并且在header.php
并加载模板。
一个粗略的例子:
// in functions.php
add_action( \'template_redirect\', \'get_my_shared_vars\' );
function get_my_shared_vars() {
static $shared_vars = NULL;
if ( empty( $shared_vars ) ) {
$shared_vars = array( \'header_var\' => \'An header value\' );
if ( is_tax() || is_category() || is_tag() ) {
$shared_vars[\'taxonomy_var\'] = \'A taxonomy value\';
}
}
return $shared_vars;
}
// in header.php
$shared_vars = get_my_shared_vars();
echo $shared_vars[\'header_var\']; // \'An header value\'
// in taxonomy.php
$shared_vars = get_my_shared_vars();
echo $shared_vars[\'taxonomy_var\']; // \'A taxonomy value\'
在以前的代码中,由于
static
关键字中的所有代码
get_my_shared_vars
用于设置变量的函数只运行一次,因此如果多次调用该函数,则无需担心性能问题。