如所讨论的, 模板文件 是模块化的,可重复使用的文件,用于生成WordPress网站的网页。一些模板文件(如页眉和页脚模板)上使用您网站的所有网页,而有些则只能在特定条件下使用。
本文介绍的WordPress是如何确定的模板文件(S)到单个页面使用的。如果您想自定义现有的WordPress主题它会帮助你决定哪些模板文件需要进行编辑。
提示:您还可以使用条件标签来控制模板加载一个特定的页面上。
WordPress使用的查询字符串来决定哪些模板或模板集应该用于显示该页面。查询字符串是包含在链接到你的网站的各个部分的信息。它配备了最初的问号后,可能包含一些由&符号分隔参数。
简单地说,WordPress的向下搜索通过模板层次结构,直到它找到一个匹配的模板文件。要确定要使用的模板文件,WordPress的:
有了基本的例外
index.php模板文件,可以选择是否要实现一个特定的模板文件或没有。
如果WordPress的无法找到匹配的名称的模板文件,它会跳到层次结构中的下一个文件。如果WordPress的无法找到任何匹配的模板文件,主题的
index.php文件将被使用。
如果你的博客是在
http://example.com/blog/和一个访问者点击一个链接到分类页面如
http://example.com/blog/category/your-cat/,WordPress的会在当前主题的目录中的模板文件相匹配的类别的ID生成正确的页面。更具体地说,WordPress的如下步骤:
category-unicorns.php。
category-unicorns.php缺少与类别的ID为4,WordPress的查找名为模板文件
category-4.php。
category-4.php丢失,WordPress会寻找一个通用类模板文件
category.php。
category.php不存在,WordPress会寻找一个通用模板,归档,
archive.php。
archive.php也不见了,WordPress会回落到主题模板文件
index.php。
下图显示了哪些模板文件调用生成基于WordPress的模板层级一个WordPress页面。
你也可以用这个图互动。
虽然模板层次是比较容易理解的图,以下各部分介绍了模板文件由WordPress呼吁一些查询类型的顺序。
默认情况下,WordPress的设置您的网站的主页,以显示你最新的博客文章。此网页被称为博客文章的索引。您还可以设置您的博客文章显示一个单独的静态页面上。模板文件
home.php是用来渲染博客文章的索引,它是否被用作头版或单独的静态页面上。如果
home.php不存在,WordPress会使用
index.php。
home.php
index.php
注意:如果
front-page.php存在,它将覆盖
home.php模板。
该
front-page.php模板文件是用来使您的网站的头版,头版是否显示博客文章指数(如上所述)或一个静态页面。前面的页面模板优先于博客帖子指数(
home.php)的模板。如果该
front-page.php文件不存在,WordPress会无论是使用
home.php还是
page.php取决于设置的设置→阅读文件。如果没有这些文件的存在,它会使用该
index.php文件。
front-page.php-用于既有“ 你最新的帖子 ”或“ 静态页面 ”中设定的头版显示的设置→阅读部分。
home.php-如果WordPress的无法找到
front-page.php和“ 你的最新帖子 ”中的设置头版显示部分,它会寻找
home.php。此外,WordPress会寻找时,这个文件的帖子页面中设置头版显示部分。
page.php-当“ 头版 ”被设置在前端页面显示部分。
index.php-当“ 你最新的帖子 ”被设置在前端页面显示部分,但
home.php不存在或 在头版设置,但
page.php不存在。
正如你所看到的,有很多的规则,以什么样的路径WordPress的需要。使用上面的图是确定什么WordPress会显示的最佳方式。
单后模板文件用于呈现一个职位。WordPress使用以下路径:
single-{post-type}-{slug}.php– (自4.4)首先,WordPress的查找的特定职位的模板。例如,如果后期型的
product和后蛞蝓是
dmc-12,在WordPress会寻找
single-product-dmc-12.php。
single-{post-type}.php-如果岗位类型
product,在WordPress会寻找
single-product.php。
single.php– WordPress的然后回落到
single.php。
singular.php-然后回落到
singular.php。
index.php-最后,如上面提到的,WordPress的最终落回
index.php。
使用模板文件来渲染一个静态页面(
page类型后)。请注意,与其他类型的后期制作,
page是特别的WordPress和使用下面的补丁:
custom template file-本页面模板分配到该页面。见
get_page_templates()。
page-{slug}.php-如果页面蛞蝓是
recent-news,WordPress会看使用
page-recent-news.php。
page-{id}.php-如果页面ID是6,WordPress会看使用
page-6.php。
page.php
singular.php
index.php
渲染分类存档的索引页使用WordPress中以下路径:
category-{slug}.php-如果该类别的鼻涕虫是
news,WordPress会寻找
category-news.php。
category-{id}.php-如果该类别的ID是
6,WordPress会寻找
category-6.php。
category.php
archive.php
index.php
要显示一个标签存档索引页,WordPress使用以下路径:
tag-{slug}.php-如果标签的鼻涕虫是
sometag,WordPress会寻找
tag-sometag.php。
tag-{id}.php-如果标签的ID是
6,WordPress会寻找
tag-6.php。
tag.php
archive.php
index.php
自定义分类使用稍有不同的模板文件路径:
taxonomy-{taxonomy}-{term}.php-如果分类学
sometax,和分类 的任期
someterm,WordPress会寻找
taxonomy-sometax-someterm.php.在的情况下,后期格式,分类标准是“post_format”和术语是“后格式化{}格式。即
taxonomy-post_format-post-format-link.php该链接后的格式。
taxonomy-{taxonomy}.php-如果是分类
sometax,WordPress的将寻找
taxonomy-sometax.php。
taxonomy.php
archive.php
index.php
自定义文章类型使用以下路径呈现相应的存档的索引页。
archive-{post_type}.php-如果岗位类型
product,WordPress会寻找
archive-product.php。
archive.php
index.php
(对于渲染单篇文章类型模板,请参阅单后显示上述部分。)
根据上面的例子,笔者渲染存档的索引页是相当的解释:
author-{nicename}.php-如果作者的好听的名字是
matt,WordPress会寻找
author-matt.php。
author-{id}.php-如果作者的ID是
6,WordPress会寻找
author-6.php。
author.php
archive.php
index.php
基于日期的存档索引页呈现你所期望的:
date.php
archive.php
index.php
搜索结果遵循相同图案作为其它模板类型:
search.php
index.php
同样,404的模板文件被称为顺序是:
404.php
index.php
渲染附件页面(
attachment类型后)需要按照如下路径:
MIME_type.php-它可以是任何的MIME类型(例如:
image.php,
video.php,
application.php)。为
text/plain,下面的路径被使用(按顺序):
text.php
plain.php
text_plain.php
attachment.php
single-attachment.php
single.php
index.php
嵌入模板文件用于呈现被嵌入的一个职位。由于4.5,WordPress使用以下路径:
embed-{post-type}-{post_format}.php-首先,WordPress的查找的特定职位的模板。举例来说,如果它的 信息类型是
product它具有音频格式,在WordPress会寻找
embed-product-audio.php。
embed-{post-type}.php-如果岗位类型
car,在WordPress会寻找
embed-car.php。
embed.php– WordPress的然后回落到嵌入
.php。
wp-includes/theme-compat/embed.php
WordPress的模板系统可以过滤层次结构。这意味着,你可以插入并在层次结构的特定点改变的事情。过滤器(位于get_query_template()
功能)使用该过滤器名:
"{$type}_template"其中,
$type是在没有层次结构的文件名
.php扩展名。
这里是在过滤器中的层次结构的所有模板类型的完整列表:
例如,让我们默认笔者层次:
author-{nicename}.php
author-{id}.php
author.php
要添加
author-{role}.php之前
author.php,我们可以操纵使用’author_template“模板类型实际的层次结构。这允许/作者/用户名其中用户名具有编辑器的作用,以显示是否出现在当前themes目录编写者-editor.php的请求。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
function author_role_template( $templates = '' ) { $author = get_queried_object(); $role = $author ->roles[0]; if ( ! is_array ( $templates ) && ! empty ( $templates ) ) { $templates = locate_template( array ( "author-$role.php" , $templates ), false ); } elseif ( empty ( $templates ) ) { $templates = locate_template( "author-$role.php" , false ); } else { $new_template = locate_template( array ( "author-$role.php" ) ); if ( ! empty ( $new_template ) ) { array_unshift ( $templates , $new_template ); } } return $templates ; } add_filter( 'author_template' , 'author_role_template' ); |