我定义了一个变量,我们称之为$header_var
, 放置在标题中。php文件。我希望将此变量传递到我的模板文件(在本例中为taxonomy.php)。
另外,我也希望能够以另一种方式做同样的事情,比如通过$template_var
根据我的分类法。php到标题。php。
这是可能的,因为在加载头之后没有声明变量吗?
我试过使用global$header_var
但是没有运气。
有什么建议吗?
我定义了一个变量,我们称之为$header_var
, 放置在标题中。php文件。我希望将此变量传递到我的模板文件(在本例中为taxonomy.php)。
另外,我也希望能够以另一种方式做同样的事情,比如通过$template_var
根据我的分类法。php到标题。php。
这是可能的,因为在加载头之后没有声明变量吗?
我试过使用global$header_var
但是没有运气。
有什么建议吗?
我定义了一个变量,我们称之为$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
用于设置变量的函数只运行一次,因此如果多次调用该函数,则无需担心性能问题。get_header
有$args
参数get_header( \'foo\', [ \'header_var\' => \'A value\' ] ); // header-foo.php will be loaded
/**
* OR
*/
get_header( null, [ \'header_var\' => \'A value\' ] ); // header.php will be loaded
header.php
<?php echo $args[\'header_var\']; ?>
/**
* OR
*/
<?php extract($args); ?>
<?php echo $header_var; ?>
/**
* Or with defaults
*/
$defaults = array(
\'header_var2\' => \'bar\',
// ...
);
extract(wp_parse_args( $args, $defaults ));
<?= $header_var ?>
<?= $header_var2 ?>
将您的主题名(themename)和缩写名(shortname)设置为变量以用于主题的各种函数,这是一个坏主意吗?示例:$themename = mytheme; $shortname = mth; /** * Get our wp_nav_menu() fallback, wp_page_menu(), to show a home link. */ function toolbox_page_menu_args($args) { /