2.7 KiB
2.7 KiB
站点编辑模板
模板与模板部件流程
本文档将阐述模板及模板部件在前端如何渲染、在后端如何编辑的内部机制。
存储机制
与常规模板类似,区块模板最初以文件形式存在于主题文件夹中,但主要区别在于用户可通过站点编辑器的界面编辑这些模板。
当用户编辑模板(或模板部件)时,初始的主题模板文件将保持原样,但模板的衍生版本会保存至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端点的GETAPI请求都需要进行同步 - 当渲染模板(有时称为"解析模板")时:这是WordPress遵循的算法,用于遍历模板层级结构并为当前加载页面找到正确的渲染模板
- 当导出区块主题时,我们需要将所有模板重新导出为文件。同步机制可简化此操作,仅导出CPT模板
主题切换
由于区块主题使用的模板可以相互引用,并且可以保存到自定义文章类型中,因此可能混合使用来自不同主题的模板和模板部件。例如:
- 用户可能喜欢主题A的"页眉"模板部件,并希望在主题B中使用它
- 用户可能喜欢主题A的"联系"模板,并希望在主题B中使用它
实现这些流程需要精心设计的界面和用户体验。在全站编辑的当前阶段,我们首先禁止这些可能性,确保模板和模板部件具有主题专属性。
尽管如此,记录模板和模板部件的初始来源(基于哪个主题)仍然非常重要。我们通过为每个模板和模板部件CPT条目保存包含主题标识符的theme文章元数据来实现这一点。
未来,我们可能会考虑允许用户混合使用具有不同theme文章元数据值的模板和模板部件。