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

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

发布于 2017-10-10 字数 4878 浏览 1914 评论 0

本文将介绍 WordPress 主题文件执行的顺序和文件的层次结构。就是当你访问一个页面时,我们要看看有哪些模板文件被执行。我们都知道单篇日志是用 single.php 解析内容的。 单页面是用page.php 来解析的。但 WordPress 将根据各种实际情况来寻找不同的模板文件,因此这里我们就要看看这是如何工作的。

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

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

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

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

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


首页

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

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

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

单篇日志

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

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

单个静态页面

其实这个在 WP 里面就叫 page ,这里翻译成中文后反倒不好分清了。

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

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

最后 WP 将像搜索别名页面模板一样搜索文件 ID 模板。

分类

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

我相信,如果你已经看完了上面的话,这里应该不用我解释了。文件搜索规则是一样的。

标签

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

其它分类(Taxonomy)

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

这里原文并没有做多少解释。但个人觉得这里要稍微解释下。什么是 taxonomy?它的英文意思很简单,就是分类。但是在WP里面仅这么说的话,我相应很多人还是会一头雾水。还有什么是 term ? term 的英文意思是术语。

在 WP 里面,term 可以是 post_tag (日志标签)、link_category(链接类别)、category(日志分类)及任何其它自定义的分类。例如自定义了一个名为 book (书籍,自定义日志类型)的日志类型,可以把 writer (作家)作为 taxonomy,那么作家的名字,如 hanhan(韩寒),就是 term 之一,一个 taxonomy 下可以有很多 term。

也就是说,taxonomy 是 term 的一个集合。这样,我们就可以有 taxonomy-writer-hanhan.php 作为显示韩寒的书籍分类页面的模板,taxonomy-writer.php 作为显示书籍分类的模板。

作者

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

附件

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

日期

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

存档

  1. archive.php
  2. index.php

搜索

  1. search.php
  2. index.php

搜索模板用于显示搜索结果。

404页面

  1. 404.php
  2. index.php

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2891 文章
评论
84935 人气
更多

推荐作者

伊面

文章 0 评论

白况

文章 0 评论

七禾

文章 0 评论

亢潮

文章 0 评论

悲念泪

文章 0 评论