WordPress主题模板层次指南
如果你想定制一个主题或者从头开始构建一个新的主题,理解WordPress主题模板的层次结构是如何工作的是很重要的。
首先,这个WordPress系统有助于保持一切井然有序。一旦你知道所有的主题模板文件是什么,它们做什么,它们的优先级是什么,你将能够改变WordPress网站外观的几乎所有方面。
在这篇文章中,我们将解释什么是WordPress主题模板层次结构以及它是如何工作的。然后,我们将提供每种类型的WordPress页面所涉及的模板文件的完整分类(包括参考备忘单)来帮助你充分利用它们。
WordPress主题模板层次结构介绍
WordPress主题模板层级是如何工作的?
哪里可以找到和更改WordPress主题模板文件
按页面类型对WordPress主题模板进行分级分解
其中子主题适合WordPress模板层次结构
使用WordPress模板标签的主题开发
WordPress模板层次结构介绍
通常,非动态网站使用静态HTML和CSS文件来呈现其内容。然而,WordPress是一个基于PHP编程语言的动态平台。每个WordPress站点都会加载多个。php文件,每个文件控制一个特定部件或组件的外观。
每当你加载一个特定类型的页面,内容管理系统(CMS)就会寻找它对应的模板文件。
例如,如果您使用WordPress的搜索功能并加载搜索结果页面,CMS将查找两个模板文件:
Search.php,它控制搜索结果页面的外观。
Index.php,这是WordPress在每个层级中找不到顶层选项时使用的默认模板文件。
您可以访问的模板文件取决于您使用的主题。所有的WordPress主题都是模板、样式表和其他元素(例如图片)的集合。所以在上面的例子中,如果你使用的主题包含了一个search.php模板,WordPress会找到并加载它。
在某些情况下,您可能会使用不包含要加载的页面类型的模板文件的主题。这就是WordPress模板层次的由来。它是一个内置的系统,可以告诉WordPress加载哪些模板文件,以什么顺序加载。
对于搜索页面,如果WordPress找不到search.php文件,它将向下移动到层次结构中的下一个文件,即index.php。该文件是模板层次结构中每个分支的最终备份。
理论上,你可以只用一个模板文件,即index.php,就拥有一个全功能的主题。
然而,在实践中,具有单个模板文件的主题几乎不包含任何样式定制,并且每种类型的页面看起来几乎相同。除非这是你的目标,否则了解WordPress模板的层次结构是你作为主题开发者可以采取的最重要的步骤之一。
WordPress模板层次结构是如何工作的
你可能知道,WordPress允许你根据你想要发布的内容使用多种类型的页面。您可以使用七个主要类别:
主页
单篇文章
单页
自定义文章类型
搜索结果页面
和类别选项卡页面。
404错误页面
每个页面都有自己的定制层次结构,这意味着它使用一组特定的模板文件。
如果你快速浏览任何主题的文件夹,你通常会找到一组模板文件。以下是博客文章主题目录中列出的模板文件示例:
WordPress主题目录中列出的模板文件
这是一个单一文章页面类型,这意味着它使用single.php文件作为页面上主要内容(博客文章本身)的模板。
此外,对于每个页面元素,它都有一个单独的模板文件,其中大多数您应该一眼就能认出来,包括:
页眉
页脚
评论
补充报道
尽管每种页面类型都有自己的层次结构,但它们通常共享相同的模板文件,如header.php和footer.php,理解这一点很重要。
如果您正在构建自己的主题,这意味着您可以为每种类型的页面创建自定义样式,同时您可以构建模板文件以供重用。
您还可以为仅适用于特定页面类型的侧栏和页脚等元素创建自定义模板文件。这种灵活性完全是由于WordPress对模板的模块化方法。
当你切换主题时,你看到的布局差异归因于WordPress加载的新模板文件。子主题在WordPress主题层次结构中也起作用,我们很快会讨论到。
哪里可以找到和更改WordPress模板文件
的。php文件可以包含PHP代码和HTML标签(所有这些都可以编辑)。因此,WordPress模板文件可以像你需要的那样复杂。在许多情况下,WordPress使用的模板文件是它们管理的元素的功能集合。
例如,这里有一个WordPress官方2021主题使用的header.php模板文件的快速浏览:
2021主题标题模板文件
正如我们提到的,每个WordPress主题都包含自己的一套模板文件。你可以通过文件传输协议(FTP)客户端访问网站根目录下的文件夹,看看你的主题包含哪些模板文件。
这是WordPress的官方主题Twenty Twenty过去的样子:
二十二十个主题目录和模板文件
默认情况下,WordPress将加载位于主题主目录(wp_content > Themes)或模板部件文件夹中的模板文件。
如果您计划创建多个模板文件,我们建议您将主页模板保存在您的主目录中。对于更具体的模板文件,如全角页面或侧栏布局,您可以使用子目录。
掌握完整的WordPress模板层次结构的最好方法是通过备忘单。在这种情况下,我们将向您展示由WordPress Codex提供的模板层次结构的可视化概述:
WordPress模板层次结构
WordPress Codex包含了很多关于模板层级的信息,所以我们推荐给这个资源添加书签。现在,让我们深入了解每种页面类型及其使用的模板文件。
按页面类型对WordPress模板进行分级分解
WordPress使用七种主要类型的页面。在这一节中,我们将讨论它们中的每一个,并为您提供它们所使用的模板文件的分类。让我们从头版开始。
主页模板文件
单篇文章
单页
自定义文章类型
搜索结果页面
和类别选项卡。
404错误页面
主页模板文件
大多数用户访问你的网站时,你的WordPress主页是第一站。事实上,从一个网站到另一个网站的首页布局可能会有很大的不同。
然而,对于基本的首页,WordPress将按顺序查找这三个模板文件:
front-page.php
home.php
index.php
如果你的主题不包含front-page.php模板文件,WordPress将默认使用第二个选项,依此类推。像往常一样,index.php文件是WordPress沿着模板决策树的最后一站。
单篇文章
一篇WordPress文章使用一个文章模板层次结构。对于每篇博文的主要内容,WordPress会查找以下文件:
single.php
singular.php
index.php
但是,如果您查看模板备忘单,您会注意到在某些情况下会出现更复杂的层次结构。
这是因为WordPress允许你为一篇文章和一个类别指定一个模板文件。如果你找不到这些选项,默认是single.php。
除了主模板文件之外,还有页眉、页脚、侧栏和注释等元素。正如我们之前提到的,每个元素都有自己的模板文件。
单页
发布之后,单页是大多数WordPress网站的生计。在大多数情况下,他们使用不同的模板从你的主页,除非这两种类型的网页都是index.php默认。
下面是单页模板的层次结构:
page.php
singular.php
index.php
虽然单个文章和页面的模板层次结构是相似的,但还是有一些关键的区别。
首先,对于页面,WordPress使用自定义文件的get_page_templates()路径,您可以使用它来更改或重定向默认的页面模板。
此外,您可以为特定的slug和id创建模板。如果你有第-{slug}。php或page-{id}。php文件,WordPress会尝试按顺序加载每个文件,然后默认为page.php。
自定义文章类型
您可以为您不想与页面或帖子捆绑在一起的各种内容创建自定义文章类型。自定义文章类型为您的内容提供了更高级别的组织,并且它们也有自己的模板层次结构:
存档-{post_type}。服务器端编程语言(Professional Hypertext Preprocessor的缩写)
archive.php
index.php
自定义文章类型的模板层次结构不像整个页面或文章那样复杂。然而,WordPress允许你为每种自定义文章类型创建模板文件,因此它们不必共享完全相同的布局。
搜索结果页面
我们已经向您介绍了WordPress用于搜索结果页面的模板层次结构,所以让我们简单回顾一下它的外观:
search.php
index.php
随着我们远离“复杂”的页面类型,如文章或首页,WordPress模板层次变得更加简单。
对于搜索页面,通常不需要在结果本身之外包含太多元素。结构越简单,层级越短。
和类别选项卡。
虽然很多网站不会直接链接到它们,但是WordPress会为你的标签和类别生成收藏页面。分类法中的每一项都有一个特定的子页面。
考虑到具有大型内容库的网站的分类可能变得多么复杂,这种层次结构涉及比通常更多的“步骤”:
类别—{ slug }。服务器端编程语言(Professional Hypertext Preprocessor的缩写)
类别-{id}。服务器端编程语言(Professional Hypertext Preprocessor的缩写)
category.php
archive.php
index.php
请注意,标签使用相同的层次结构,只是在所有情况下“标签”都替换了“类别”。
理论上,你可以为WordPress网站上的每个类别或标签创建一个单独的模板文件,并通过slug或ID来识别它们。然而,很少有网站真正经历过所有这些麻烦。
如果你不想让访问者浏览你的分类页面,请随意使用默认的archive.php模板。
404错误页面
有时候,访问者会试图访问一个不存在的页面。当这种情况发生时,WordPress将返回一个404错误页面。
默认情况下,WordPress不提供定制页面外观的选项。但是,您可以通过模板文件自行调整其外观。模板层次结构相当短:
404.php
index.php
随着网站的发展,用户可能遇到404错误的情况也会增多。在这些情况下使用自定义错误页面可以帮助您告诉访问者为什么页面没有加载,将他们引向另一个方向,并减少挫折感。
当加载404模板文件时,WordPress会在使用默认文件之前找到并加载你的自定义文件。
其中子主题适合WordPress模板层次结构
如果你喜欢自定义WordPress主题,最好的方法是使用子主题。子主题在WordPress模板层次结构中也有一席之地,但是如果你看看我们之前提供的备忘单,这并不明显。
简而言之,使用子主题将为您使用的任何页面类型的模板层次结构添加第二层。
假设您在一个页面中使用一个定制模板文件的子主题。以下是WordPress尝试加载文件的顺序:
主题中的Page.php
父主题中的Page.php
主题中的Singular.php
父主题中的Singular.php
主题中的Index.php
父主题中的Index.php
如果WordPress可以在你的子主题中找到模板文件的版本,那么它将加载那个版本,即使在父主题中有相应的模板文件。在某些情况下,您可能会发现自己想要为您使用的主题定制模板文件,在这些情况下利用子主题是最完美的。
与其他类型的自定义一样,当您更新主题模板文件时,您将丢失对它所做的更改。通过副主题添加这些变化会让你脱离这种情况。
使用WordPress模板标签的主题开发
在WordPress开发中,经常会遇到模板标签,这是PHP函数,可以用来动态生成和获取数据。标签通常是模板文件的一部分,但是它们不能互换。
WordPress在其代码中构建了几十个模板标签,你可以在主题开发中使用它们。一些例子包括:
get_header()
get_footer()
get_sidebar()
get_search_form()
获取模板部件()
这些标签使您能够从您正在使用的主题中收集模板文件。实际上,这意味着您可以将特定的元素添加到主模板文件中,例如front-page.php或index.php。
如果你想要一个可以在WordPress开发中使用的所有模板标签的完整列表,请查看WordPress Codex。
在那里,您可以找到如何使用每个模板标签的说明、它们各自的参数以及实际的代码示例。
总结
尽管WordPress模板层次结构乍一看似乎很复杂,但它可以归结为一系列简单的决策树。每当你访问一个WordPress网站时,CMS会检查你试图访问的页面类型,然后使用层次结构来确定要加载的模板文件。
除了每种页面类型的主模板,您还可以为单个元素(如页眉、页脚和侧栏)提供模板文件。
这种模块化的方法让你完全控制网站上每个页面的外观,并帮助你在WordPress开发过程中节省时间。