44 lines
2.7 KiB
Markdown
44 lines
2.7 KiB
Markdown
# 站点编辑模板
|
||
|
||
## 模板与模板部件流程
|
||
|
||
本文档将阐述模板及模板部件在前端如何渲染、在后端如何编辑的内部机制。
|
||
|
||
## 存储机制
|
||
|
||
与常规模板类似,区块模板最初以文件形式存在于主题文件夹中,但主要区别在于用户可通过站点编辑器的界面编辑这些模板。
|
||
|
||
当用户编辑模板(或模板部件)时,初始的主题模板文件将保持原样,但模板的衍生版本会保存至`wp_template`自定义文章类型(模板部件则保存至`wp_template_part`)。
|
||
|
||
这意味着在任意时间点,网站前端渲染会同时使用主题文件中的模板文件与CPT模板(经编辑的模板)。
|
||
|
||
## 同步机制
|
||
|
||
为简化从两个不同位置编辑和渲染模板的算法,我们执行了名为"模板同步"的操作。
|
||
|
||
同步操作包括将主题模板复制到`wp_template`(及`wp_template_part`)自定义模板中并标记为`auto-draft`状态。当用户编辑这些模板时,状态将更新为`publish`。
|
||
|
||
这意味着:
|
||
|
||
- 模板的渲染/获取只需考虑自定义文章类型模板,无需直接从主题文件夹获取模板文件。同步机制将确保这些模板被复制到CPT中
|
||
- 未编辑的主题模板保持`auto-draft`状态
|
||
- 经编辑的主题模板具有`publish`状态
|
||
|
||
同步机制对以下两个流程至关重要:
|
||
|
||
- 当编辑模板和模板部件时,站点编辑器前端通过REST API获取已编辑和可用的模板。这意味着所有对`wp-templates`和`wp-template-parts`端点的`GET`API请求都需要进行同步
|
||
- 当渲染模板(有时称为"解析模板")时:这是WordPress遵循的算法,用于遍历模板层级结构并为当前加载页面找到正确的渲染模板
|
||
- 当导出区块主题时,我们需要将所有模板重新导出为文件。同步机制可简化此操作,仅导出CPT模板
|
||
|
||
## 主题切换
|
||
|
||
由于区块主题使用的模板可以相互引用,并且可以保存到自定义文章类型中,因此可能混合使用来自不同主题的模板和模板部件。例如:
|
||
|
||
- 用户可能喜欢主题A的"页眉"模板部件,并希望在主题B中使用它
|
||
- 用户可能喜欢主题A的"联系"模板,并希望在主题B中使用它
|
||
|
||
实现这些流程需要精心设计的界面和用户体验。在全站编辑的当前阶段,我们首先禁止这些可能性,确保模板和模板部件具有主题专属性。
|
||
|
||
尽管如此,记录模板和模板部件的初始来源(基于哪个主题)仍然非常重要。我们通过为每个模板和模板部件CPT条目保存包含主题标识符的`theme`文章元数据来实现这一点。
|
||
|
||
未来,我们可能会考虑允许用户混合使用具有不同`theme`文章元数据值的模板和模板部件。 |