主题开发者终于可以欢欣鼓舞了。现在,第一次可以通过各种核心模板加载函数将数据传递给模板。 Enrico Sorcinelli 上周五在 Make Core 博客上宣布了这些变化。
该功能最初由 Scott Kingsley Clark 于 2012 年提出。多年来,此票已收到十几个补丁。它在关闭后幸存下来,并争论为什么该功能不应该是核心。 Sorcinelli 是近年来保持 Ticketing 活跃的主要推动者。
WordPress 开发人员在 5.5 发布周期中清理了一些旧的但有用的功能请求。几周前,一张有 11 年历史的票允许用户通过 ZIP 文件更新主题和插件。核心开发人员甚至关闭了一张与 Internet Explorer 6 黑客攻击相关的 9 年前的故障单。但是,对于主题作者来说,最重要的新增功能之一是控制数据从一个模板到另一个模板的传递。
一般来说,在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 预计将改造其整个主题系统以与即将推出的全站编辑功能集成,此功能仅在接下来的几个月内可用吗?
即使大多数主题开发人员在明年不会立即加入基于块的主题潮流,但在他们这样做之前,此功能可能会派上用场。也许它在当前主题范例之外会有一些用处。
开发者还不知道区块主题在未来几年会是什么样子。在某些情况下,仍然需要在下一个系统中传递动态数据。即使不是,现有主题开发社区大规模采用基于块的主题可能还需要很长时间。同时,许多人将能够使用内部解决方案并使用标准功能。
喜欢这样:
喜欢正在加载...
资源