WordPress的模板层次结构详解

如果你的网站是基于Wordpress建立的,那么你可能经常会遇到这样的问题,就是对正在使用的Wordpress主题不太满意想要做一些更改,或者是想开发一套属于自己的Wordpress网站主题,但是却不知道应该从何处着手。打开WordPress的主题文件夹,你会发现WordPress主题包含了大量的模板文件,这些不同的模板文件控制着网站上不同的位置,遵循着WordPress模板的逻辑规则,现在我们就来了解一下Wordpress主题模板的层次结构,以及它是如何运作的。

首先,WordPress主题的模板层次结构是一个系统,它控制着不同模板文件按照既定的逻辑规则来运行,在了解了WordPress主题模板文件的工作方式及优先级规则之后,你便可以对WordPress网站外观的每个方面进行相应的更改了。

WordPress模板层次结构

通常,静态的页面只使用HTML和CSS样式表,来控制网站内容及其外观呈现。但是,WordPress是基于PHP编程语言的动态网站程序,每个WordPress网站都包含大量的的php模板文件,每个模板文件都控制着网站的特定位置和外观。每当加载某种类型的页面时,Wordpress都会遵照它的模板层次结构规则来查找与其相对应的模板文件。

例如,我们正在使用Wordpress网站的搜索功能,当我们输入搜索内容并返回搜索结果页面的时候,Wordpress将会依照先后次序来查找以下两个模板文件:

  1. search.php,它控制搜索结果页面的展现;
  2. index.php,在WordPress模板层次结构中,找不到更高优先级模板文件时,使用该文件作为默认模板文件。

所有的WordPress主题,都是由模板文件、样式表文件和其他构成元素(例如图片等)所组成的各种文件的集合。在上面的示例中,如果使用的主题中包含search.php模板文件,则WordPress将优先调用该模板文件,如果该模板文件不存在,则会选择调用index.php模板文件。

在某些情况下,某些页面类型可能没有相对应的模板文件。这个时候WordPress模板层次结构系统就要起作用了,它将告诉WordPress按照什么样的原则查找模板文件,以及应该调用哪个模板文件。

index.php文件是最基本的模板文件,它可以作为所有页面的最后的选择。它是模板层次结构中优先级最低的模板文件,只有更高优先级的模板文件不存在时才调用该文件。比如,对于搜索页面,如果WordPress无法找到search.php这个模板文件,它将继续查找层次结构中下一层级的index.php模板文件。

WordPress模板层次结构如何运作

所有的WordPress网站都可以划分为七种类型的页面:

  1. 网站首页(Site Front Page)
  2. 文章页面(Single Posts)
  3. 单页页面(Single Pages)
  4. 自定义文章类型(Custom Post Types)
  5. 搜索结果页面(Search Results Pages)
  6. 类别和标签页(Category and Tag Pages)
  7. 404错误页面(404 Error Pages)

这些页面中的每个页面遵循着各自的层次结构,来使用符合特定的规则的模板文件:

  1. 根据请求的URL确定页面的类型;
  2. 在该页面类型的模板层次结构顶部,开始查找模板文件;
  3. 如果不匹配,继续在下一层次结构中查找模板文件;
  4. 使用第一个匹配的模板文件;
  5. 如果前面的都不匹配,则使用磨人的index.php模板文件。

下面我们来举个例子,比如我们有一个文章分类页面,分类别名为“niuqi”,ID为“7”,那么当我们访问该页面的时候,将会按照如下的层次结构来查询匹配的模板文件:

  1. 发起niuqi分类页面的访问请求;
  2. 查询是否存在文件名为 category-niuqi.php的模板文件,存在则调用该文件;
  3. 不存在则继续查询是否存在文件名为 category-7.php的模板文件,存在则调用该文件;
  4. 如果上述两项都不存在,则查询是否存在名为category.php的模板文件,存在则调用该文件;
  5. 如果不存在,则继续查询是否存在名为archive.php的模板文件,存在则调用该文件;
  6. 如果上述的文件均不存在,则调用 index.php模板文件。

此外,它为每个页面元素都有一个单独的模板文件,您应该一眼就能识别出其中的大多数模板文件,其中包括:

  • 页面头部(Header)
  • 页面底部(Footer)
  • 评论区域(Comments)
  • 页面侧栏(Sidebar)

WordPress的模板层次结构详解

WordPress模板层次结构

七种页面类型

WordPress主要有七种页面类型,我们将逐一进行讨论。

  1. 网站首页(Site Front Page)
  2. 文章页面(Single Posts)
  3. 单页页面(Single Pages)
  4. 自定义文章类型(Custom Post Types)
  5. 搜索结果页面(Search Results Pages)
  6. 类别和标签页(Category and Tag Pages)
  7. 404错误页面(404 Error Pages)


首页模板文件

对于网站首页,WordPress将按先后顺序查找这三个模板文件:

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

如果WordPress主题中不包含front-page.php模板文件,则继续查找home.php模板文件,如果依然没有,则使用index.php模板文件。

文章页面

WordPress文章页面按照如下的模板层次结构查找模板文件:

  1. single-{post-type}-{slug}.php
  2. single-{post-type}.php
  3. single.php
  4. singular.php
  5. index.php

一般情况下,文章页面的模板层次结构是single.php > singular.php > index.php,也就是按照自前往后的顺序来查找模板文件。但是有时,我们可能会为某个文章分类的页面,定制单独的模板文件,这时就会从1开始执行的模板层次结构。比如,我们为分类别名为“features”的分类内的文章别名为“Apple-phone”的文章页面创建single-features-Apple-phone.php这个模板文件。同样,如果我们为分类别名为“features”的分类创建统一的文章模板文件,则可以创建single-features.php模板文件。

单页页面

单页页面的模板层次结构为:

  1. Custom template file
  2. page{slug}.php
  3. page-{id}.php
  4. page.php
  5. singular.php
  6. index.php

单页页面安装从1到6的层次结构,来查找模板文件。对于别名为“about-us”,ID为“19”的单页页面。WordPress先查找名为page-about-us.php的模板文件,如果没有则查询名为page-19.php的模板文件,如果仍然没有,则依次查找page.php > singular.php > index.php模板文件。

自定义文章类型

有的时候,我们可能想要创建区别于文章和页面的内容类型,这时候我们可以按照如下的模板层次结构:

  1. archive- {post_type} .php
  2. archive.php
  3. index.php

搜索结果页面

WordPress用于搜索结果页面的模板层次结构:

  1. search.php
  2. index.php

分类页和标签页

文章分类页的模板层次结构如下所示:

  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

404错误页面

404错误页面的模板层次结构如下:

  1. 404.php
  2. index.php

随着网站的发展,用户遇到404错误的情况也会越来越多。错误页面可以告知访问者为何页面无法加载,并将他们引导到其他的页面。

子主题的模板层次结构

如果想对WordPress主题进行自定义的更改,当然可以直接在主题内更改,但是一旦主题进行升级更新,那么所做的更改将被新版本覆盖,而如果是使用子主题的方式进行更改,则不会受到主题升级的影响。子主题的模板的层次结构如下:

  1.  子主题中的page.php
  2.  父主题内的page.php
  3.  子主题中的singular.php
  4.  父主题中的singular.php
  5.  子主题中的index.php
  6.  父主题中的index.php

如果WordPress能在子主题中找到模板文件的相应版本,将优先选择子主题内的模板文件,即使父主题中有对应的模板文件也是如此。

WordPress模板标签

在WordPress主题开发中,经常会使用到模板标签。模板标签可用于获取和显示动态数据。WordPress在其代码中构建了数十个模板标签,我们可以在主题开发中使用它们。常用标签示例:

  • get_header()
  • get_footer()
  • get_sidebar()
  • get_search_form()
  • get_template_part()

原创文章,作者:牛奇网,如若转载,请注明出处:https://www.niuqi360.com/wordpress/wordpress-template-hierarchy/

发表评论

登录后才能评论