WordPress 模板层次结构简介

已发表: 2019-12-11

WordPress 用户在他们生活中的某个时候提出的关键问题之一如下:WordPress 主题如何根据我们看到的内容来显示不同的页面?

这个问题除了完全合法之外,还非常有趣。 WordPress 能够识别它要呈现的内容,并根据其类型使用一个模板或另一个模板。 WordPress 主题只不过是针对每种内容类型的一组特定模板,其中包含一些用于动态元素的 JavaScript 和用于样式和颜色的 CSS。

完美,但是……WordPress 模板实际上是如何工作的? 这就是我们将在这篇文章中逐步看到的内容。

不过,在我们开始之前,让我给你看一张图片,上面有这个问题的答案:

WordPress模板层次结构
WordPress 模板层次结构。

这是 WordPress 模板层次结构。 您可以在官方文档 WordPress Codex 中找到有关它的所有信息。 您甚至可以在这个很酷的网站中与这个层次结构进行交互。

基本上,WordPress 使用模板层次结构来呈现其内容。 也就是说,WordPress 在您为特定 PHP 文件激活的主题中搜索。 如果存在,WordPress 会使用该文件呈现内容,我们称之为模板。 如果没有,WordPress 会在层次结构中查找下一个最通用的模板。 如果存在,WordPress 会使用它。 否则,WordPress 会在层次结构中查找下一个模板……以此类推。 如果 WordPress 在您的主题中找不到特定的模板文件,它会使用默认的index.php文件,这是所有模板中最通用的。

现在,让我们深入了解一些最常见的 WordPress 内容的模板层次结构。

页面模板

让我们看看 WordPress 用于呈现页面和简单内容类型的模板。

帖子和自定义帖子类型

WordPress 在您的主题上查看以下 PHP 文件以呈现博客文章或自定义文章类型:

  1. single-{post-type}-{slug}.php :如果您想要特定帖子或特定帖子类型的特定模板,则必须在主题中创建此 PHP 文件。 它的名称包括帖子类型名称 ( {post-type} ),它可以是post或其他任何名称 ( product ,如果您使用 WooCommerce )。 而且您还必须以模板的名称键入 slug 或永久链接,随心所欲地称呼它。 例如,如果我想为这篇文章使用特定模板,我必须创建single-post-introduction-to-the-wordpress-template-hierarchy.php文件。
  2. single-{post-type}.php :如果我们想影响特定帖子类型的所有内容(所有帖子或所有产品),我们将使用此模板,其名称仅包含帖子类型的名称。
  3. single.php :WordPress 使用此模板来呈现任何单个内容(特定帖子、特定产品等)。
  4. singular.php :这是另一个用于呈现任何类型的单一内容的顶级模板。
  5. index.php :如果以上都没有找到,WordPress 使用这个通用模板来呈现您的内容。

请记住,在 WordPress 主题目录中,您可以使用数以千计的 WordPress 主题示例。 作为学习练习,我建议您下载一个并尝试检查其 PHP 文件并识别我刚刚提供的模板。

通过这样做,您可以了解他们在 WordPress 模板的层次结构中使用哪些模板,并查看每个模板具有哪些内容。 毫无疑问,如果您想了解 WordPress 主题,这是必须要做的事情。 此外,它是免费的!

常规页面

与帖子和其他帖子类型一样,WordPress 使用模板层次结构来呈现页面:

  1. 选定模板:如果在编辑页面时从页面属性框中选择特定模板,则它始终优先于所有其他模板。 您可以在此处学习创建自定义模板。
  2. page-{slug}.php :如果您希望特定页面拥有自己的模板,请在名称中包含页面 slug 的 PHP 文件中创建该模板。
  3. page-{id}.php :您也可以直接使用应用模板的 WordPress 页面 ID。
  4. page.php :此模板适用于所有 WordPress 页面,除非层次结构中的先前模板之一已被应用。
  5. singular.php :单数模板是所有页面、帖子、产品等的默认模板。 这个模板很少被应用,因为 WordPress 中的大多数主题已经包含一个page.php模板。
  6. index.php :与往常一样,这是 WordPress 的默认后备模板。

现在尝试再次检查您之前下载的主题,您会发现现在您对那里出现的其他文件有了更多的了解。 当然,您现在可以识别页面模板的 PHP 文件。

特殊页面

在 WordPress 中,还有其他特殊页面也使用特定模板来呈现内容。 这方面的一个例子是网站的主页。 请记住,在阅读子菜单中的 WordPress设置中选择了主页。 以下模板层次结构用于该页面:

  1. front-page.php :如果您在 WordPress 中使用静态页面作为主页,它将首先尝试应用front-page.php模板。
  2. home.php :如果没有找到之前的模板,WordPress 会尝试使用这个模板。 如果您没有选择静态页面作为主页,而是选择了显示最新帖子的选项,也可以使用此模板。
  3. index.php :同样,默认模板始终存在。

显示您的 WordPress 搜索结果的页面也是一个特殊的页面,可以有自己的模板。 为此,您可以使用search.php模板。 如果您的主题没有定义它, index.php将照常使用。

最后,您的网站返回 404 错误时显示的页面也可以使用特定的 WordPress 模板进行配置。 您必须在主题中创建404.php文件,然后将应用此模板。

档案模板

到目前为止,我们已经看到了单一内容的模板(搜索结果除外)。 但在 WordPress 中也有存档,它可能会在页面中呈现多个元素。 让我们看看在这种情况下 WordPress 使用的模板层次结构。

类别和标签

WordPress 对类别使用以下模板层次结构:

  1. category-{slug}.php :此模板用于呈现属于特定类别的内容列表(通常是帖子)。 特别是,它会在渲染其 slug 出现在 PHP 文件名中的类别时使用。
  2. category-{id}.php :如果您更喜欢使用类别 ID 而不是 slug,您也可以这样做。 例如,如果要将模板应用于类别 13,请创建名称为category-13.php的模板文件。
  3. category.php :所有类别的默认模板。
  4. archive.php :这是 WordPress 中最通用的档案模板。
  5. index.php :同样,如果您的主题不包含更具体的模板,WordPress 将默认使用此文件。

以下模板层次结构用于标签:

  1. tag-{slug}.php :如果标签名为interview ,我们可以使用tag-interview.php模板,以防我们想在 WordPress 中为该标签设计一个特定的模板。
  2. tag-{id}.php :我们也可以通过标签ID来定义模板。
  3. tag.php :与category.php一样,这是标签的通用模板。
  4. archive.php :同样,如果以上都不存在,将使用此模板。
  5. index.php :与往常一样,这是备用模板。

自定义帖子类型和自定义分类法

如果我们有自定义内容类型,我们可以使用模板archive-{post_type}.php其中post_type是自定义帖子类型的slug 。 这将呈现该帖子类型的内容列表。

对于自定义分类法,WordPress 使用以下模板层次结构:

  1. taxonomy-{taxonomy}-{term}.php :如果您在 WordPress 中有一个名为videogames的自定义分类法,并且想要为该分类法中的术语运动创建具有特定设计的模板,则必须创建文件taxonomy-videogames-sports.php使用该模板。
  2. taxonomy-{taxonomy}.php :如果您想对所有分类术语使用相同的模板,只需使用前面示例中的taxonomy-videogames.php即可。
  3. taxonomy.php :这是所有分类的默认模板。
  4. archive.php :如果上述模板都不存在,则适用。
  5. index.php :同样,这是默认的后备模板。

通过所有这些解释,您应该已经拥有在 WordPress 主题中创建和识别模板所需的一切。

总结

了解 WordPress 模板的层次结构是理解主题甚至开发自己的主题的关键。 当您开始修改您在我们的 WordPress 中使用的主题的 PHP 代码时,看看它并知道它是如何获得信心的,这永远不会有什么坏处。

还有一些其他的模板,但很少使用。 无论如何,请记住您可以随时查看 WordPress Codex 文档。 在那里你会找到这里没有解释的一切。

你怎么看这一切? 您是否仍在为您的 WordPress 内容使用模板,或者您是否已经使用块构建了所有设计? 如果您已经到达帖子的末尾,请不要忘记在下面给我留言 - 我很想知道您如何使用 WordPress 模板!

Edvard Alexander RlvaagUnsplash的特色图片