WordPress主题文件的执行顺序及其层次结构详解

本文将展示主题文件执行的层次结构。简而言之,当你加载一个页面时,我们要看看哪些模板文件被执行。您可能已经知道单篇日志是用single.php解析的。单个页面是加载page.php来渲染的。但WordPress将根据各种实际情况来寻找不同的模板文件,因此,我们就要看看这是如何工作的。

我们首先应该清楚这一点:没有index.php和style.css你的主题已经不再是一个有效的WordPress主题…所以理所当然,如果你只有这两个文件,每一个网页被渲染时WordPress都将试图加载index.php。各位看官且快速浏览一眼下面这个“cheatsheet”来看看我所指的:

 

(ps:这个图应该从上至下,从左往右看。)

注意一下每个页面类型的执行流程都将在index.php终结。这就是为什么index.php是每一个WordPress主题所必须的文件。如果我们在WordPress主题中遗漏任何其他文件(例如,如果没有“search.php”),WordPress会自动调用index.php。

现在让我们来看看一些执行顺序的细节问题。我要向你们展示WordPress在你当前活动主题文件夹中搜索文件的流程。当你打算从现在开始创造一个WordPress主题的话,我希望这将会是有用的:我将会向你展示每一类型的文件执行的层次。

首页

对于每一个网站,这是第一,也是最重要的一个页面。所以WordPress提供了极大的范围来让你定制这个页面。让我们看看这个用于显示首页的文件的层次。

1. front-page.php
2. home.php
3. index.php

当客户端请求主页时,WordPress将搜索front-page.php。 如果不存在,它将会使用home.php。如果 home.php存在,它会用到它。否则,它会默认采用index.php。

单篇日志

1. single-[post-type].php
2. single.php
3. index.php

只要你需要,WordPress可以有各种日志类型。这将会更容易使得所有/一些日志类型可以有不同的设计。默认情况下“post”是WordPress主要和默认的日志类型。
那么举例来说,如果你的自定义日志类型是product,那么它的模板将会是single-product.php
了解更多如何添加新日志类型,你可以参考这个链接。

独立页面

1. [custom-template].php
2. page-[slug].php
3. page-[id].php
4. page.php
5. index.php

与日志类型一样,类型,我们可以使用自定义页模板让独立页面有不同的页面布局。WordPress首先搜索指定的页面模板文件(如果存在)。
如果没有找到,它将寻找带有当前页面别名(slug)的模板文件。基本上,如果别名是aboutus,那么它将在当前主题文件夹中搜索文件page-aboutus.php。
WordPress将像搜索别名页面模板一样搜索文件ID模板。

分类

1. category-[slug].php
2. category-[id].php
3. category.php
4. archive.php
5. index.php

通过上面的流程,你应该理解如何为分类页面指定不同的模板。例如,你可以基于一个分类的别名和ID为其指定一个自定义模板文件,然后,其他分类使用默认的“category.php”文件作为模板。

标签

1. tag-[slug].php
2. tag-[id].php
3. tag.php
4. archive.php
5. index.php

此处原理同分类相同。你也可以基于标签的别名和ID为标签页面指定不同的模板文件。

分类法

1. taxonomy-[tax]-[term].php
2. taxonomy-[tax].php
3. taxonomy.php
4. archive.php
5. index.php

这是分类法页面的模板文件层次。

作者

1. author-[author-nicname].php
2. author-[author-id].php
3. author.php
4. archive.php
5. index.php

对于不同的作者页面也可以做不同的设计。与分类和标签一样,我们可以基于作者的别名和ID为作者页面指定不同的模板文件。

附件

1. [mime-type].php
2. attachment.php
3. single.php
4. index.php

对于不同类型的附件页面也可设计不同的页面布局。附件类型即附件文件的MIME类型。

日期

1. date.php
2. archive.php
3. index.php

为日期页面指定布局可以通过在增加data.php文件实现。

存档

1. archive.php
2. index.php

越靠下,文件层次中的文件越少了。archive.php是一个基础文件,也可以说任何主题中最长使用的文件。

搜索

1. search.php
2. index.php

搜索结果页面使用search.php文件作为模板。如果没有search.php,搜索结果页面将使用index.php作为模板。

404页面

1. 404.php
2. index.php

页面不存在的情况下,Wordpress会调用404.php展示结果,如果没有找到404.php,将使用index.php。

结论

显然你可以使用这些知识在广泛的方法不同为各种类型的页面加载自定义模板…在很多情况下,即使你在使用一个现有的主题,你仍可以在不改变现有模板文件的情况下得到一个定制的解决方案。你只是需要创建新文件,并按照上述规则指定一个新的名字。
分享你的想法和任何可以包含以上的层次结构的附加文件。

后话

也话有朋友会说,你这个文章中列的文件不完整,不是还有 comments.php 和 comments-popup.php 吗?是的,对于一个标准的主题,这是应该有的。不过,本文不是在讨论WP主题应该有哪些文件,而是讨论主题文件的执行顺序问题,归根结底,comments.php 和 comments-popup.php 不是被WP直接调用的,而是由主题制作者自行调用的(由single.php或page.php调用)。因此,原作者在这里没有列出comments.php 和 comments-popup.php 我想也是完全合理的。

原文链接:https://code.tutsplus.com/articles/the-wordpress-theme-files-execution-hierarchy–wp-23508

分享

文章导航