FreeDom

【转译】WordPress模板结构

如所讨论的,  模板文件  是模块化的,可重复使用的文件,用于生成WordPress网站的网页。一些模板文件(如页眉和页脚模板)上使用您网站的所有网页,而有些则只能在特定条件下使用。

本文介绍的WordPress是如何确定的模板文件(S)到单个页面使用的。如果您想自定义现有的WordPress主题它会帮助你决定哪些模板文件需要进行编辑。

提示:您还可以使用条件标签来控制模板加载一个特定的页面上。

模板文件层次模板文件层次

概述概述

WordPress使用的查询字符串来决定哪些模板或模板集应该用于显示该页面。查询字符串是包含在链接到你的网站的各个部分的信息。它配备了最初的问号后,可能包含一些由&符号分隔参数。

简单地说,WordPress的向下搜索通过模板层次结构,直到它找到一个匹配的模板文件。要确定要使用的模板文件,WordPress的:

  1. 相匹配的所有查询字符串查询类型来决定被请求的页面(例如,搜索页面,一个分类页面等);
  2. 选择由模板层次确定的顺序模板;
  3. 查找与当前主题目录特定名称的模板文件,并使用第一个匹配的模板文件由指定的层次结构。

有了基本的例外

index.php

模板文件,可以选择是否要实现一个特定的模板文件或没有。

如果WordPress的无法找到匹配的名称的模板文件,它会跳到层次结构中的下一个文件。如果WordPress的无法找到任何匹配的模板文件,主题的

index.php

文件将被使用。

顶部↑

举例示例

如果你的博客是在

http://example.com/blog/

和一个访问者点击一个链接到分类页面如 

http://example.com/blog/category/your-cat/

,WordPress的会在当前主题的目录中的模板文件相匹配的类别的ID生成正确的页面。更具体地说,WordPress的如下步骤:

  1. 会在当前主题的目录中的模板文件,该类别的蛞蝓匹配。如果类别蛞蝓是“独角兽”,那么WordPress的查找一个名为模板文件
    category-unicorns.php

  2. 如果
    category-unicorns.php

    缺少与类别的ID为4,WordPress的查找名为模板文件

    category-4.php

  3. 如果
    category-4.php

    丢失,WordPress会寻找一个通用类模板文件

    category.php

  4. 如果
    category.php

    不存在,WordPress会寻找一个通用模板,归档,

    archive.php

  5. 如果
    archive.php

    也不见了,WordPress会回落到主题模板文件

    index.php

顶部↑

视觉概述视觉概述

下图显示了哪些模板文件调用生成基于WordPress的模板层级一个WordPress页面。

你也可以用这个图互动

顶部↑

模板层次细节模板层次细节

虽然模板层次是比较容易理解的图,以下各部分介绍了模板文件由WordPress呼吁一些查询类型的顺序。

顶部↑

首页显示首页显示

默认情况下,WordPress的设置您的网站的主页,以显示你最新的博客文章。此网页被称为博客文章的索引。您还可以设置您的博客文章显示一个单独的静态页面上。模板文件

home.php

是用来渲染博客文章的索引,它是否被用作头版或单独的静态页面上。如果 

home.php

 不存在,WordPress会使用 

index.php

  1. home.php
  2. index.php
    

注意:如果

front-page.php

 存在,它将覆盖  

home.php

 模板。

顶部↑

头版显示头版显示

front-page.php

模板文件是用来使您的网站的头版,头版是否显示博客文章指数(如上所述)或一个静态页面。前面的页面模板优先于博客帖子指数(

home.php

)的模板。如果该

front-page.php

文件不存在,WordPress会无论是使用

home.php

还是

page.php

取决于设置的设置→阅读文件。如果没有这些文件的存在,它会使用该

index.php

文件。

  1. front-page.php

     -用于既有“ 你最新的帖子 ”或“ 静态页面 ”中设定的头版显示的设置→阅读部分。

  2. home.php

     -如果WordPress的无法找到  

    front-page.php

    和“ 你的最新帖子 ”中的设置头版显示部分,它会寻找

    home.php

    。此外,WordPress会寻找时,这个文件的帖子页面中设置头版显示部分。

  3. page.php

     -当“ 头版 ”被设置在前端页面显示部分。

  4. index.php

     -当“ 你最新的帖子 ”被设置在前端页面显示部分,但  

    home.php

    不存在 在头版设置,但

    page.php

    不存在。

正如你所看到的,有很多的规则,以什么样的路径WordPress的需要。使用上面的图是确定什么WordPress会显示的最佳方式。

顶部↑

单个帖子单个帖子

单后模板文件用于呈现一个职位。WordPress使用以下路径:

  1. single-{post-type}-{slug}.php

     – (自4.4)首先,WordPress的查找的特定职位的模板。例如,如果后期型

    product

    和后蛞蝓是

    dmc-12

    ,在WordPress会寻找

    single-product-dmc-12.php

  2. single-{post-type}.php

    -如果岗位类型

    product

    ,在WordPress会寻找

    single-product.php

  3. single.php

    – WordPress的然后回落到

    single.php

  4. singular.php

    -然后回落到

    singular.php

  5. index.php

    -最后,如上面提到的,WordPress的最终落回

    index.php

顶部↑

单页单页

使用模板文件来渲染一个静态页面(

page

类型后)。请注意,与其他类型的后期制作,

page

是特别的WordPress和使用下面的补丁:

  1. custom template file

     -本页面模板分配到该页面。见

    get_page_templates()

  2. page-{slug}.php

     -如果页面蛞蝓是

    recent-news

    ,WordPress会看使用

    page-recent-news.php

  3. page-{id}.php

     -如果页面ID是6,WordPress会看使用

    page-6.php

  4. page.php
  5. singular.php
  6. index.php

顶部↑

分类分类

渲染分类存档的索引页使用WordPress中以下路径:

  1. category-{slug}.php

     -如果该类别的鼻涕虫是

    news

    ,WordPress会寻找

    category-news.php

  2. category-{id}.php

     -如果该类别的ID是

    6

    ,WordPress会寻找

    category-6.php

  3. category.php
  4. archive.php
  5. index.php

顶部↑

要显示一个标签存档索引页,WordPress使用以下路径:

  1. tag-{slug}.php

     -如果标签的鼻涕虫是

    sometag

    ,WordPress会寻找

    tag-sometag.php

  2. tag-{id}.php

     -如果标签的ID是

    6

    ,WordPress会寻找

    tag-6.php

  3. tag.php
  4. archive.php
  5. index.php

顶部↑

自定义分类自定义分类

自定义分类使用稍有不同的模板文件路径:

  1. taxonomy-{taxonomy}-{term}.php

     -如果分类学

    sometax

    ,和分类 的任期

    someterm

    ,WordPress会寻找

    taxonomy-sometax-someterm.php.

    在的情况下,后期格式,分类标准是“post_format”和术语是“后格式化{}格式。即

    taxonomy-post_format-post-format-link.php

     该链接后的格式。

  2. taxonomy-{taxonomy}.php

     -如果是分类

    sometax

    ,WordPress的将寻找

    taxonomy-sometax.php

  3. taxonomy.php
  4. archive.php
  5. index.php

顶部↑

自定义文章类型自定义文章类型

自定义文章类型使用以下路径呈现相应的存档的索引页。

  1. archive-{post_type}.php

     -如果岗位类型

    product

    ,WordPress会寻找

    archive-product.php

  2. archive.php
  3. index.php

(对于渲染单篇文章类型模板,请参阅单后显示上述部分。)

顶部↑

作者显示作者显示屏

根据上面的例子,笔者渲染存档的索引页是相当的解释:

  1. author-{nicename}.php

     -如果作者的好听的名字是

    matt

    ,WordPress会寻找

    author-matt.php

  2. author-{id}.php

     -如果作者的ID是

    6

    ,WordPress会寻找

    author-6.php

  3. author.php
  4. archive.php
  5. index.php

顶部↑

日期日期

基于日期的存档索引页呈现你所期望的:

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

顶部↑

搜索结果搜索结果

搜索结果遵循相同图案作为其它模板类型:

  1. search.php
  2. index.php

顶部↑

404(未找到)404(未找到)

同样,404的模板文件被称为顺序是:

  1. 404.php
  2. index.php

顶部↑

附件附件

渲染附件页面(

attachment

类型后)需要按照如下路径:

  1. MIME_type.php

    -它可以是任何的MIME类型(例如: 

    image.php

    video.php

    application.php

    )。为

    text/plain

    ,下面的路径被使用(按顺序):

    1. text.php
    2. plain.php
    3. text_plain.php
  2. attachment.php
  3. single-attachment.php
  4. single.php
  5. index.php

顶部↑

嵌入嵌入功能

嵌入模板文件用于呈现被嵌入的一个职位。由于4.5,WordPress使用以下路径:

  1. embed-{post-type}-{post_format}.php

     -首先,WordPress的查找的特定职位的模板。举例来说,如果它的  信息类型

    product

    它具有音频格式,在WordPress会寻找

    embed-product-audio.php

  2. embed-{post-type}.php

    -如果岗位类型

    car

    ,在WordPress会寻找

    embed-car.php

  3. embed.php

    – WordPress的然后回落到嵌入

    .php

  4. 最后,WordPress的最终回落到 
    wp-includes/theme-compat/embed.php

顶部↑

过滤层次过滤层次

WordPress的模板系统可以过滤层次结构。这意味着,你可以插入并在层次结构的特定点改变的事情。过滤器(位于

get_query_template()

功能)使用该过滤器名:

"{$type}_template"

其中,

$type

是在没有层次结构的文件名

.php

扩展名。

这里是在过滤器中的层次结构的所有模板类型的完整列表:

  • index_template
  • 404_template
  • archive_template
  • author_template
  • category_template
  • TAG_TEMPLATE
  • taxonomy_template
  • date_template
  • home_template
  • front_page_template
  • page_template
  • paged_template
  • search_template
  • single_template
  • text_template,plain_template,text_plain_template(所有MIME类型)
  • attachment_template
  • comments_popup
  • embed_template

顶部↑

举例示例

例如,让我们默认笔者层次:

  • 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'

 

);
(1)

本文由 橙叶博客 作者:ChengYe 发表,转载请注明来源!

热评文章

发表评论