如果你的网站是基于Wordpress建立的,那么你可能经常会遇到这样的问题,就是对正在使用的Wordpress主题不太满意想要做一些更改,或者是想开发一套属于自己的Wordpress网站主题,但是却不知道应该从何处着手。打开WordPress的主题文件夹,你会发现WordPress主题包含了大量的模板文件,这些不同的模板文件控制着网站上不同的位置,遵循着WordPress模板的逻辑规则,现在我们就来了解一下Wordpress主题模板的层次结构,以及它是如何运作的。
首先,WordPress主题的模板层次结构是一个系统,它控制着不同模板文件按照既定的逻辑规则来运行,在了解了WordPress主题模板文件的工作方式及优先级规则之后,你便可以对WordPress网站外观的每个方面进行相应的更改了。
WordPress模板层次结构
通常,静态的页面只使用HTML和CSS样式表,来控制网站内容及其外观呈现。但是,WordPress是基于PHP编程语言的动态网站程序,每个WordPress网站都包含大量的的php模板文件,每个模板文件都控制着网站的特定位置和外观。每当加载某种类型的页面时,Wordpress都会遵照它的模板层次结构规则来查找与其相对应的模板文件。
例如,我们正在使用Wordpress网站的搜索功能,当我们输入搜索内容并返回搜索结果页面的时候,Wordpress将会依照先后次序来查找以下两个模板文件:
- search.php,它控制搜索结果页面的展现;
- index.php,在WordPress模板层次结构中,找不到更高优先级模板文件时,使用该文件作为默认模板文件。
所有的WordPress主题,都是由模板文件、样式表文件和其他构成元素(例如图片等)所组成的各种文件的集合。在上面的示例中,如果使用的主题中包含search.php模板文件,则WordPress将优先调用该模板文件,如果该模板文件不存在,则会选择调用index.php模板文件。
在某些情况下,某些页面类型可能没有相对应的模板文件。这个时候WordPress模板层次结构系统就要起作用了,它将告诉WordPress按照什么样的原则查找模板文件,以及应该调用哪个模板文件。
index.php文件是最基本的模板文件,它可以作为所有页面的最后的选择。它是模板层次结构中优先级最低的模板文件,只有更高优先级的模板文件不存在时才调用该文件。比如,对于搜索页面,如果WordPress无法找到search.php这个模板文件,它将继续查找层次结构中下一层级的index.php模板文件。
WordPress模板层次结构如何运作
所有的WordPress网站都可以划分为七种类型的页面:
- 网站首页(Site Front Page)
- 文章页面(Single Posts)
- 单页页面(Single Pages)
- 自定义文章类型(Custom Post Types)
- 搜索结果页面(Search Results Pages)
- 类别和标签页(Category and Tag Pages)
- 404错误页面(404 Error Pages)
这些页面中的每个页面遵循着各自的层次结构,来使用符合特定的规则的模板文件:
- 根据请求的URL确定页面的类型;
- 在该页面类型的模板层次结构顶部,开始查找模板文件;
- 如果不匹配,继续在下一层次结构中查找模板文件;
- 使用第一个匹配的模板文件;
- 如果前面的都不匹配,则使用磨人的index.php模板文件。
下面我们来举个例子,比如我们有一个文章分类页面,分类别名为“niuqi”,ID为“7”,那么当我们访问该页面的时候,将会按照如下的层次结构来查询匹配的模板文件:
- 发起niuqi分类页面的访问请求;
- 查询是否存在文件名为 category-niuqi.php的模板文件,存在则调用该文件;
- 不存在则继续查询是否存在文件名为 category-7.php的模板文件,存在则调用该文件;
- 如果上述两项都不存在,则查询是否存在名为category.php的模板文件,存在则调用该文件;
- 如果不存在,则继续查询是否存在名为archive.php的模板文件,存在则调用该文件;
- 如果上述的文件均不存在,则调用 index.php模板文件。
此外,它为每个页面元素都有一个单独的模板文件,您应该一眼就能识别出其中的大多数模板文件,其中包括:
- 页面头部(Header)
- 页面底部(Footer)
- 评论区域(Comments)
- 页面侧栏(Sidebar)
WordPress模板层次结构
七种页面类型
WordPress主要有七种页面类型,我们将逐一进行讨论。
- 网站首页(Site Front Page)
- 文章页面(Single Posts)
- 单页页面(Single Pages)
- 自定义文章类型(Custom Post Types)
- 搜索结果页面(Search Results Pages)
- 类别和标签页(Category and Tag Pages)
- 404错误页面(404 Error Pages)
首页模板文件
对于网站首页,WordPress将按先后顺序查找这三个模板文件:
- front-page.php
- home.php
- index.php
如果WordPress主题中不包含front-page.php模板文件,则继续查找home.php模板文件,如果依然没有,则使用index.php模板文件。
文章页面
WordPress文章页面按照如下的模板层次结构查找模板文件:
- single-{post-type}-{slug}.php
- single-{post-type}.php
- single.php
- singular.php
- index.php
一般情况下,文章页面的模板层次结构是single.php > singular.php > index.php,也就是按照自前往后的顺序来查找模板文件。但是有时,我们可能会为某个文章分类的页面,定制单独的模板文件,这时就会从1开始执行的模板层次结构。比如,我们为分类别名为“features”的分类内的文章别名为“Apple-phone”的文章页面创建single-features-Apple-phone.php这个模板文件。同样,如果我们为分类别名为“features”的分类创建统一的文章模板文件,则可以创建single-features.php模板文件。
单页页面
单页页面的模板层次结构为:
- Custom template file
- page–{slug}.php
- page-{id}.php
- page.php
- singular.php
- index.php
单页页面安装从1到6的层次结构,来查找模板文件。对于别名为“about-us”,ID为“19”的单页页面。WordPress先查找名为page-about-us.php的模板文件,如果没有则查询名为page-19.php的模板文件,如果仍然没有,则依次查找page.php > singular.php > index.php模板文件。
自定义文章类型
有的时候,我们可能想要创建区别于文章和页面的内容类型,这时候我们可以按照如下的模板层次结构:
- archive- {post_type} .php
- archive.php
- index.php
搜索结果页面
WordPress用于搜索结果页面的模板层次结构:
- search.php
- index.php
分类页和标签页
文章分类页的模板层次结构如下所示:
- category–{slug}.php
- category-{id}.php
- category.php
- archive.php
- index.php
相对应的标签页的模板层次结构:
- tag–{slug}.php
- tag-{id}.php
- tag.php
- archive.php
- index.php
404错误页面
404错误页面的模板层次结构如下:
- 404.php
- index.php
随着网站的发展,用户遇到404错误的情况也会越来越多。错误页面可以告知访问者为何页面无法加载,并将他们引导到其他的页面。
子主题的模板层次结构
如果想对WordPress主题进行自定义的更改,当然可以直接在主题内更改,但是一旦主题进行升级更新,那么所做的更改将被新版本覆盖,而如果是使用子主题的方式进行更改,则不会受到主题升级的影响。子主题的模板的层次结构如下:
- 子主题中的page.php
- 父主题内的page.php
- 子主题中的singular.php
- 父主题中的singular.php
- 子主题中的index.php
- 父主题中的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/