WordPress 5.5+ 可将参数传递给模板文件

百句空言,不如一个行动。凡事回归原点,不懂就不懂,努力学习;懂了也要相信人外有人,放下架子,谦虚,能力提升方可最大化!

多年来,希望将数据传递到模板文件的主题开发人员不得不使用不太理想的解决方法。这包括使用全局变量、set_query_var()include( locate_template() )模型或自己版本的get_template_part()等等。

从WordPress 5.5开始,模板加载功能将允许使用$args参数将其他参数传递给匹配的模板文件。

受影响的函数

  1. get_header()
  2. get_footer()
  3. get_sidebar()
  4. get_template_part()
  5. locate_template()
  6. 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任何修改将覆盖使用上述函数传递的所有值。

该功能请求是8年前提交的,大家都久等了,感谢开发人员的努力!

要了解更多信息,请查看#21676。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

本文WordPress 5.5+ 可将参数传递给模板文件到此结束。要想让这个世界更快乐,其实轻而易举。为什么?只要对寂寞灰心者说几句真诚的赞赏的话就可以了。虽然你可能明天就忘记了今天说的话,但接受者可能珍视一生。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
WordPress 5.5+ 可为元数据(meta data)注册默认值

你可能不知道的几个 wp-config.php 常量设置

WordPress站点Gravatar头像前后台不显示的如何解决办法

WordPress主题需要支持https吗?WordPress站点如何如何实现https?

WordPress站点的页面/标签/分类URL地址如何添加.html?