主题开发人员希望将数据传递到模板文件,但是没有什么理想的解决方法,包括使用全局变量、 set_query_var()、include( locate_template() ) 模型或自己版本的 get_template_part()等等。接下来WordPress 5.5+模板功能可将参数传递给模板文件。
受影响的函数
get_header()
get_footer()
get_sidebar()
get_template_part()
locate_template()
load_template()
为了提供适当的上下文,相关的动作挂钩也已更新为传递此新$args参数。
get_header
get_footer
get_sidebar
get_template_part_{$slug}
get_template_part
注意: get_search_form() 从[44956]开始,已经接受并将其他参数传递给搜索表单模板。但是,该$args参数是在与上述挂钩同时添加的。它们是:
pre_get_search_form (行动)
search_form_format(过滤)
get_search_form (过滤)
示例
<?php
get_template_part(
'foo',
null,
array(
'class' => 'user',
'arbitrary_data' => array(
'foo' => 'baz',
'bar' => true,
),
...
)
);
在上面的示例中,可以通过本地范围的 $args 变量在模板 foo.php 内访问get_template_part()通过$args变量传递的其他数据。
<?php
// Example foo.php template.
// Set defaults.
$args = wp_parse_args(
$args,
array(
'class' => '',
'arbitrary_data' => array(
'foo' => 'fooval',
'bar' => false,
),
...
)
);
?>
<div class="widget <?php echo esc_html_class( $args['class'] ); ?>">
<?php echo esc_html( $args['arbitrary_data']['foo'] ); ?>
</div>
注意:使用此新功能时,任何当前包含$args变量的模板文件都应注意。对已加载的模板文件的$args任何修改将覆盖使用上述函数传递的所有值。
发表评论