WordPress 区块主题模板层级
完整的区块主题(全站编辑)模板层级:针对每种请求类型,列出 WordPress 依次查找的模板顺序,从最具体的开始,最终回退到 index.html。这是经典模板层级图在区块时代的对应版本。
对于每个请求,WordPress 会按顺序查找这些模板 —— 从最具体的开始 —— 并在你主题的 /templates 文件夹中找到的第一个存在的模板处停止。这条链条始终以 index.html 结尾。
首页
站点的首页,无论其设置为显示最新文章还是某个静态页面。
- front-page.html
- home.html
- index.html
无论"设置 → 阅读"中如何选择,front-page.html 始终优先匹配。如果首页是一个静态页面且不存在 front-page.html,则会回退到静态页面链条,而不是 home.html。
博客文章列表页
列出最新文章的页面(即"设置 → 阅读"中的"文章页")。
- home.html
- index.html
单篇文章
一篇独立的博客文章。
- single-post-{slug}.html
- single-post.html
- single.html
- singular.html
- index.html
单条自定义文章类型
某个自定义文章类型的单条内容(例如一本"书")。
- single-{post-type}-{slug}.html
- single-{post-type}.html
- single.html
- singular.html
- index.html
对于别名为 "dune" 的 "book" 文章类型:先匹配 single-book-dune.html,再匹配 single-book.html,最后匹配 single.html。
静态页面
一个普通的 WordPress 页面。
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
使用自定义模板的页面
在编辑器"模板"面板中为其指定了自定义模板的页面。
- {custom-template}.html
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
自定义模板在 theme.json 的 customTemplates 数组中声明,文件位于 /templates 目录下。所指定的模板会优先于整条页面匹配链条。
分类归档
列出某个分类下文章的归档页。
- category-{slug}.html
- category-{id}.html
- category.html
- archive.html
- index.html
标签归档
列出带有某个标签的文章的归档页。
- tag-{slug}.html
- tag-{id}.html
- tag.html
- archive.html
- index.html
自定义分类法归档
某个自定义分类法中某个项的归档页。
- taxonomy-{taxonomy}-{term}.html
- taxonomy-{taxonomy}.html
- taxonomy.html
- archive.html
- index.html
作者归档
某位作者所有文章的归档页。
- author-{nicename}.html
- author-{id}.html
- author.html
- archive.html
- index.html
日期归档
按年 / 月 / 日划分的归档页。
- date.html
- archive.html
- index.html
文章类型归档
已设置 has_archive 的自定义文章类型的归档列表页。
- archive-{post-type}.html
- archive.html
- index.html
搜索结果
站内搜索的结果页。
- search.html
- index.html
404(未找到)
当没有内容与该 URL 匹配时显示。
- 404.html
- index.html
附件页
单个媒体附件对应的页面。
- attachment.html
- single.html
- singular.html
- index.html
许多站点会完全禁用附件页(它们内容单薄)。如果你保留它们,这就是其匹配链条。
隐私政策页
在"设置"中被指定为站点隐私政策的页面。
- page-privacy-policy.html
- privacy-policy.html
- page.html
- singular.html
- index.html
这与经典(PHP)层级结构有何不同
- 模板是位于 /templates 目录下的 .html 文件,而不是主题根目录下的 .php 文件。这里没有 single.php——它是 single.html。
- 可复用的区域(页眉、页脚)是位于 /parts 目录下的模板 PART,通过 wp:template-part 区块引用,而不是通过 get_header() / get_footer() 这类 PHP 调用。
- 这里没有 get_template_part() 链条,也没有 get_header()/get_footer()。组合是在 .html 文件中通过"模板部件"区块完成的。
- index.html 是必需的。缺少 templates/index.html 的 block theme 不是一个有效的 block theme——它是上面每一条路由的强制性最终回退项。
- 主题是否为 block theme,是由 templates/index.html 与一个 theme.json 的存在与否决定的,而不是由任何头部标志(header flag)决定。
- 你可以在站点编辑器(外观 → 编辑器)中编辑上述任意模板,并将改动保存到数据库——保存后的版本会覆盖主题的文件,直到你清除该自定义为止。这常常让那些排查"为什么我改了模板却毫无变化"的人感到意外。