如前所述,模板文件是模块化的、可重复使用的文件,用于在您的 WordPress 网站上生成网页。 某些模板文件(例如页眉和页脚模板)用于您网站的所有页面,而其他模板文件仅在特定条件下使用。
本文解释了 WordPress 如何确定在各个页面上使用哪些模板文件。 如果您想自定义现有的 WordPress 主题,它将帮助您决定需要编辑哪个模板文件。
您还可以使用条件标签来控制在特定页面上加载哪些模板。
WordPress 使用查询字符串来决定应该使用哪个模板或模板集来显示页面。 查询字符串是包含在指向您网站每个部分的链接中的信息。
简而言之,WordPress 向下搜索模板层次结构,直到找到匹配的模板文件。 要确定要使用的模板文件,WordPress:
- 将每个查询字符串与查询类型匹配,以决定正在请求哪个页面(例如,搜索页面、类别页面等);
- 按照模板层次结构确定的顺序选择模板;
- 在当前主题的目录中查找具有特定名称的模板文件,并使用层次结构指定的第一个匹配的模板文件。
除了基本的 index.php 模板文件外,您可以选择是否要实现特定的模板文件。
在这些示例中,使用了 PHP 文件扩展名。 在块主题中,改为使用 HTML 文件,但模板层次结构是相同的。
如果 WordPress 找不到具有匹配名称的模板文件,它将跳到层次结构中的下一个文件。 如果 WordPress 找不到任何匹配的模板文件,将使用主题的 index.php 文件。
当您使用子主题时,您添加到子主题的任何文件都将覆盖父主题中的相同文件。 例如,两个主题包含相同的模板 category.php,则使用子主题的模板。
如果子主题包含特定模板,例如 category-unicorns.php,而父主题包含优先级较低的模板,例如 category.php,则使用子主题的 category-unicorns.php。
相反,如果子主题仅包含通用模板,例如 category.php,而父主题包含特定模板,例如 category-unicorns.php,则使用父主题的模板 category-unicorns.php。
如果您的博客位于 http://example.com/blog/ 并且访问者单击指向类别页面的链接,例如 http://example.com/blog/category/your-cat/,则 WordPress 会查找模板 当前主题目录中与类别 ID 匹配的文件以生成正确的页面。 更具体地说,WordPress 遵循以下过程:
- 在当前主题的目录中查找与类别的 slug 匹配的模板文件。 如果类别 slug 是“独角兽”,那么 WordPress 会查找名为 category-unicorns.php 的模板文件。
- 如果 category-unicorns.php 缺失且类别 ID 为 4,WordPress 会查找名为 category-4.php 的模板文件。
- 如果 category-4.php 缺失,WordPress 将查找通用类别模板文件 category.php。
- 如果 category.php 不存在,WordPress 将查找通用归档模板 archive.php。
- 如果archive.php 也丢失,WordPress 将回退到主题模板文件index.php。
下图显示了调用哪些模板文件来生成基于 WordPress 模板层次结构的 WordPress 页面。
虽然模板层次结构更容易理解为图表,但以下部分描述了 WordPress 针对多种查询类型调用模板文件的顺序。
默认情况下,WordPress 将您网站的主页设置为显示您最新的博客文章。 此页面称为博客文章索引。 您还可以将博客文章设置为显示在单独的静态页面上。 模板文件 home.php 用于呈现博客文章索引,无论是用作首页还是单独的静态页面。 如果 home.php 不存在,WordPress 将使用 index.php。
- home.php
- index.php
front-page.php 模板文件用于呈现您网站的首页,无论首页显示博客文章索引(如上所述)还是静态页面。 首页模板优先于博客文章索引 (home.php) 模板。 如果 front-page.php 文件不存在,WordPress 将根据设置 → 阅读中的设置使用 home.php 或 page.php 文件。 如果这些文件都不存在,它将使用 index.php 文件。
- front-page.php - 用于“您的最新帖子”或“静态页面”,如设置→阅读的首页显示部分中设置的。
- home.php – 如果 WordPress 找不到 front-page.php 并且在首页显示部分设置了“您的最新帖子”,它将查找 home.php。 此外,当在首页显示部分设置帖子页面时,WordPress 将查找此文件。
- page.php – 在首页显示部分设置“首页”时。
- index.php – 当首页显示部分设置了“您的最新帖子”但 home.php 不存在或设置了首页但 page.php 不存在时。
如您所见,WordPress 采用的路径有很多规则。 使用上面的图表是确定 WordPress 将显示什么的最佳方法。
privacy-policy.php 模板文件用于呈现您网站的隐私政策页面。 隐私政策页面模板优先于静态页面 (page.php) 模板。 如果 privacy-policy.php 文件不存在,WordPress 将根据可用模板使用 page.php 或 single.php 文件。 如果这些文件都不存在,它将使用 index.php 文件。
- privacy-policy.php – 用于设置→隐私的更改您的隐私政策页面部分中设置的隐私政策页面。
- 自定义模板文件 – 分配给页面的页面模板。请参阅 get_page_templates()。
- page-{slug}.php - 如果页面 slug 是隐私,WordPress 将使用 page-privacy.php。
- page-{id}.php – 如果页面 ID 为 6,WordPress 将使用 page-6.php。
- page.php
- singular.php
- index.php
单个帖子模板文件用于呈现单个帖子。 WordPress 使用以下路径:
- single-{post-type}-{slug}.php –(自 4.4 起)首先,WordPress 为特定帖子寻找模板。 例如,如果帖子类型是产品并且帖子 slug 是 dmc-12,则 WordPress 将查找 single-product-dmc-12.php。
- single-{post-type}.php – 如果文章类型是产品,WordPress 会查找 single-product.php。
- single.php – WordPress 然后回退到 single.php。
- singular.php– WordPress 然后回退到 singular.php。
- index.php – 最后,如上所述,WordPress 最终会退回到 index.php。
用于呈现静态页面(页面后期类型)的模板文件。 请注意,与其他帖子类型不同,页面对 WordPress 来说是特殊的,并且使用以下路径:
- 自定义模板文件 – 分配给页面的页面模板。 请参阅 get_page_templates()。
- page-{slug}.php – 如果页面 slug 是最近新闻,WordPress 将使用 page-recent-news.php。
- page-{id}.php – 如果页面 ID 为 6,WordPress 将使用 page-6.php。
- page.php
- singular.php
- index.php
渲染分类归档索引页面在 WordPress 中使用以下路径:
- category-{slug}.php - 如果类别的 slug 是新闻,WordPress 将查找 category-news.php。
- category-{id}.php - 如果类别的 ID 为 6,WordPress 将查找 category-6.php。
- category.php
- archive.php
- index.php
为了显示标签存档索引页面,WordPress 使用以下路径:
- tag-{slug}.php – 如果标签的 slug 是 sometag,WordPress 将查找 tag-sometag.php。
- tag-{id}.php - 如果标签的 ID 为 6,WordPress 将查找 tag-6.php。
- tag.php
- archive.php
- index.php
自定义分类法使用稍微不同的模板文件路径:
- taxonomy-{taxonomy}-{term}.php – 如果分类法是 sometax,并且分类法的术语是 someterm,WordPress 将查找 taxonomy-sometax-someterm.php。 对于帖子格式,分类是“post_format”,术语是“post-format-{format}”。 即 taxonomy-post_format-post-format-link.php 用于链接发布格式。
- taxonomy-{taxonomy}.php – 如果分类是 sometax,WordPress 会寻找 taxonomy-sometax.php。
- taxonomy-php
- archive.php
- index.php
自定义帖子类型使用以下路径呈现适当的存档索引页面。
- archive-{post_type}.php – 如果帖子类型是产品,WordPress 将查找 archive-product.php。
- product.php
- archive.php
- index.php
(关于渲染单个帖子类型模板,请参阅上面的单个帖子显示部分。)
基于上述示例,呈现作者存档索引页面是相当解释性的:
- author-{nicename}.php - 如果作者的好名字是 matt,WordPress 将查找 author-matt.php。
- author-{id}.php - 如果作者的 ID 为 6,WordPress 将查找 author-6.php。
- author.php
- archive.php
- index.php
基于日期的存档索引页面会按照您的预期呈现:
- date.php
- archive.php
- index.php
搜索结果遵循与其他模板类型相同的模式:
- search.php
- index.php
同样,按以下顺序调用 404 个模板文件:
- 404.php
- index.php
呈现附件页面(附件后类型)使用以下路径:
- {MIME-type}.php – 可以是任何 MIME 类型(例如:image.php、video.php、pdf.php)。 对于 text/plain,使用以下路径(按顺序):
- text-plain.php
- plain.php
- text.php
- attachment.php
- single-attachment-{slug}.php – 例如,如果附件 slug 是假日,WordPress 会查找 single-attachment-holiday.php。
- single-attachment.php
- single.php
- singular.php
- index.php
嵌入模板文件用于呈现正在嵌入的帖子。 从 4.5 开始,WordPress 使用以下路径:
- embed-{post-type}-{post_format}.php – 首先,WordPress 为特定帖子寻找模板。 例如,如果它的帖子类型是 post 并且它具有音频格式,则 WordPress 将查找 embed-post-audio.php。
- embed-{post-type}.php – 如果文章类型是产品,WordPress 会查找 embed-product.php。
- embed.php – WordPress 然后回退到 embed.php。
- 最后,WordPress 最终会退回到它自己的 wp-includes/theme-compat/embed.php 模板。
从 WordPress 4.7 开始,模板名称中包含非 ASCII 字符的任何动态部分实际上都按顺序支持未编码和编码形式。 您可以选择使用哪个。
这是一个名为“Hello World