最新公告

    Sorry, no posts matched your criteria.

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

作者 : 黑域吧 本文共1088个字,预计阅读时间需要3分钟 发布时间: 2020-07-19 共1K人阅读

多年来,希望将数据传递到模板文件的主题开发人员不得不使用不太理想的解决方法。这包括使用全局变量、 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年前提交的,大家都久等了,感谢开发人员的努力!

提示:
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!邮箱:(332547532@qq.com)
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请点击右下方联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码请在"下载框架提示方寻找",如遇到无法解压的请联系管理员!
黑域吧资源网 » WordPress 5.5+ 可将参数传递给模板文件

发表评论

现在加入黑域吧资源网,