主题开发人员终于可以欢喜了。 现在,第一次可以通过各种核心模板加载功能将数据传递到模板。 恩里科·索西内利(Enrico Sorcinelli) 宣布变更 在上周五的Make Core博客上。
的 功能最初提出 由斯科特·金斯利·克拉克(Scott Kingsley Clark)在2012年创作。多年来,这张票已收到十几个补丁。 它在闭包中幸存下来,并争论了为什么该功能不应该成为核心。 Sorcinelli是最近几年保持票务活跃的主要司机。
WordPress开发人员已经在5.5发布周期中清理了一些旧的但有用的功能请求。 几周前,一张11岁的门票允许用户 通过ZIP文件更新主题和插件 削减了。 核心开发人员甚至关闭了一张9年的票证,该票证与 Internet Explorer 6骇客 -进展。 但是,对于主题作者来说,最重要的附加功能之一是控制将数据从一个模板传递到另一个模板。
通常,在PHP中,变量可以在文件之间传递,因为它们保持在同一范围内。 但是,如果通过从函数内部包含文件来将文件包含排除在该范围之外,则情况并非如此。 范围则限于该功能。 这就是模板系统在WordPress中的工作方式。 这不一定是一件坏事。 但是,这意味着主题开发人员没有将数据从一个模板传递到下一个模板的内置方法。
想象一下在一个模板中创建一个变量,但是需要在一个子模板中访问相同的变量。 不乏实现此目的的方法,但许多方法并不完善。
“多年来,希望将数据传递到模板文件的主题开发人员不得不使用不太理想的解决方法,” Sorcinelli在公告中写道。 最糟糕的解决方案通常涉及创建全局变量。 其他人在WordPress的现有系统之上创建了自定义模板加载功能。 无论哪种方法都理想,所有方法的问题都是没有标准。 每个主题都需要构建自己的解决方案,而触及前端的插件通常会有竞争的解决方案。
现在,所有WordPress模板加载功能都支持$ args的附加参数,该参数允许主题作者将数据的关联数组传递给加载的模板。 支持此新参数的函数是:
- get_header()
- get_footer()
- get_sidebar()
- get_template_part()
- locate_template()
- load_template()
与功能关联的所有挂钩也将传递数据。
自WordPress 5.2起,get_search_form()函数支持类似的参数。 实际上,它的工作原理几乎相同,但是该函数具有几个默认值。
具有将数据传递到模板的标准方法的另一个好处是,将来可以在该功能上构建该功能。 例如,WordPress最终可以提供一个过滤数据的挂钩,可以与子主题配合使用。
WordPress模板系统仍然缺乏更现代的框架的健壮性,但是这种简单的更改将允许各种应用程序。
仍然存在一个问题:此功能的推出是否为时已晚? 随着WordPress有望改进整个主题系统以与即将到来的全站点编辑功能集成,此功能仅在接下来的几个月中有用吗?
即使大多数主题开发人员在接下来的一年中不会立即跳入基于块的主题潮流,该功能也可能会派上用场,直到他们这样做为止。 也许它将在当前主题范式之外还具有一些有用性。
开发人员仍不清楚未来几年带块主题的外观。 在某些情况下,下一个系统中仍然需要传递动态数据。 即使不是这样,距离现有主题开发社区大规模采用基于块的主题也可能需要很长时间。 同时,许多人将能够使用内部解决方案并使用标准功能。
像这样:
喜欢加载中……