WordPress的模板文件像一个机器上的各个零部件,这些零部件共同合作,为WordPress网站生成各种类型的页面。有些模板(例如页眉模板文件和页脚模板文件)会在所有网页上出现,而其它模板只出现在特定条件下。
本文目的在于寻找下面这个问题的答案:
WordPress显示某一类型页面时,使用的是哪个(哪些)模板文件?
自WordPress 1.5版引入主题功能后,模板的配置也越来越灵活。为了能够更好地开发WordPress的主题,我们有必要了解WordPress在显示网站不同页面时 如何调用模板文件。如果需要定制已有的WordPress主题,本文也可以告诉你哪些主题模板文件需要修改。
WordPress提供了多种方式匹配模板与查询类型。WordPress主题开发人员也可以使用条件标签来决定生成特定页面时所使用的模板。有些WordPress主题可能只执行本文提到的部分模板文件,有些主题使用条件标签来加载其它模板文件。更多信息请阅读条件标签 与主题开发中的“基于查询的模板”。
WordPress用查询字符串——网站上每个链接中所包含的信息——来决定显示页面时应使用的模板。
首先WordPress会将每个查询字符串与查询类型相匹配——例如,判断访问者所请求的页面类型(搜索页面,类别页面,主页等)。
然后按照WordPress模板层级规定的顺序以及主题中的模板文件是否可用选择模板并生成页面内容。
WordPress在当前主题文件中查找特定名称的模板文件,然后在相应查询区域下方列出的模板文件中选择首个匹配的模板文件。
除了最基本的index.php模板文件外,主题开发人员可以决定他们是否需要执行某个特定模板文件。如果WordPress不能找到与当前名称相 匹配的模板文件,会自动跳转到模板层级的下一个文件名称进行查找。如果WordPress查找不到任何匹配模板文件,系统默认使用index.php文件 (主题的主页模板文件)代替。
假设某博客地址是http://example.com/wp/,并且有个访问者点击了网站上的一个类别页面,页面地址为http: //example.com/wp/category/your-cat/,此时WordPress的任务是在当前主题文件中查找与类别ID相匹配的模板 文件。如果类别ID为4,WordPress会查找名称为category-4.php的模板文件。如果该文件丢失,WordPress继续查找通用类别 模板文件category.php。如果category.php文件也不存在,WordPress会查找通用存档模板archive.php。如果 archive.php文件仍然不存在,WordPress会用主题的主模板文件index.php来代替所查找的文件。
如果访问者点击的是网站主页 http://example.com/wp/,WordPress首先判断网站是否存在静态首页,如果存在WordPress会根据页面模板层级加载静 态首页;如果不存在静态首页,WordPress会查找home.php模板文件并用该文件生成用户所请求页面。若home.php文件丢 失,WordPress会在当前主题文件中查找index.php文件并用该文件生成用户请求页面。
WordPress根据模板层级调用各种模板文件以生成网站的不同页面。
WordPress为不同查询类型调用模板文件,顺序如下:
查询主页时
1. home.php
2. index.php
查询某篇日志时
1. single.php
2. index.php
查询页面时
WordPress页面:
1. pagetemplate.php——pagetemplate.php是页面模板分配给页面的模板文件
2. page.php
3. index.php
查询类别时
类别模板:
1. category-id.php——例如,若类别ID为6,WordPress查找category-6.php文件
2. category.php
3. archive.php
4. index.php
查询标签时
标签模板:
1. tag-slug.php——例如,若标签的别名为sometag,WordPress会查找tag-sometag.php文件
2. tag.php
3. archive.php
4. index.php
查询作者时
作者模板:
1. author.php
2. archive.php
3. index.php
查询日期时
存档(日期)模板
1. date.php
2. archive.php
3. index.php
查询搜索结果时
创建搜索页面:
1. search.php
2. index.php
404页面未找到
生成404错误页面:
1. 404.php
2. index.php
查询附件时
附件模板:
1. image.php, video.php, audio.php, application.php以及其它MIME类型的第一部分
2. attachment.php
3. single.php
4. index.php