本文档将解释模板和模板部件如何在前端呈现并在后端编辑的内部原理。
与常规模板一样,块模板最初作为主题文件夹中的文件存在,但主要区别在于用户可以在站点编辑器的UI中编辑这些模板。
当用户编辑模板(或template-part)时,初始主题模板文件保持原样,但模板的分叉版本保存到wp_模板
自定义帖子类型(或wp_模板_部件
用于模板零件)。
这些功能意味着,在任何时间点,模板文件(来自主题)和CPT模板(编辑的模板)的组合用于呈现站点的前端。
为了简化用于从两个不同位置编辑和渲染模板的算法,我们执行了一个名为“模板同步”的操作。
同步包括复制wp_模板
(和wp_模板_部件
)自定义模板自动制图
状态。当用户编辑这些模板时,状态更新为出版
.
这意味着:
- 模板的呈现/获取只需要考虑自定义的post类型模板。不需要直接从主题文件夹中获取模板文件。同步将确保这些内容在CPT中重复。
- 非接触主题模板具有
自动制图
状态。
- 编辑的主题模板具有
出版
状态。
同步对于两个不同的流很重要:
- 在编辑模板和模板部件时,站点编辑器前端通过REST API获取已编辑和可用的模板。这意味着
GET(获取)
对执行的API请求wp-模板
和wp模板部件
需要端点同步。
- 呈现模板时(有时称为“解析模板”):这是WordPress用来遍历模板层次结构并为当前加载的页面找到要呈现的正确模板的算法。
- 导出块主题时,我们需要将其所有模板导出为文件。为了简化操作,只导出CPT模板,需要进行同步。
由于块主题使用可以相互引用并可以保存到自定义帖子类型的模板,因此可以混合不同主题的模板和模板部分。例如:
- 用户可能喜欢主题A的“标题”模板部分,并希望在主题B中使用它。
- 用户可能喜欢主题A中的“联系人”模板,并希望在主题B中使用它。
实现这些流动需要深思熟虑的UI和经验。对于Full-site编辑的当前阶段,我们首先禁止这些可能性,并使模板和模板-部件主题特定。
也就是说,跟踪模板和模板部件最初的来源仍然很重要。基于哪个主题。我们通过保存主题
包含每个模板和模板部分CPT条目的主题标识符的post meta。
将来,我们可能会考虑允许用户混合使用不同的模板和模板部件主题
发布元值。