WordPress模板层次结构的直接指南

如果您为WordPress构建自己的主题,或者使用子主题自定义第三方主题,请在某些时候遇到模板层次结构.

是一个精彩的系统,指示WordPress如何选择用于不同类型的内容的模板文件.它考虑了内容类型(例如,帖子,页面,附件和自定义帖子类型),分类学(例如,类别,标签和自定义分类档案),甚至允许您为特定页面创建定制模板.

但它可能会令人困惑.面对档案的分类,例如适用于帖子类型的分类,您应该使用哪个模板?以及单次帖子的模板如何工作?

在此帖子中,我将通过模板层次结构浏览您的模板,并解释它如何与一些工作的示例合作.当您阅读此内容时,您应该能够创建主题模板文件,如Pro!

The wphierarchy site is a great refresher on the template hierarchy. Wfhierarchy站点是模板层次结构上的一个很好的进修.

注意:模板层次结构上的我最喜欢的资源是Wfhierarchy,它具有明确的交互图.

继续读取,或使用以下链接跳转:

  • WordPress模板层次结构:模板类型
  • WordPress如何选择模板文件
  • 一个工作的例子
  • 包含文件
  • 模板文件和子主题

WordPress模板层次结构:模板类型

模板层次结构决定Wordpress如何处理五种主页类型:

  • 有三个模板文件更常见.后退模板文件是 index.php .如果WordPress无法找到特定内容类型的其他任何内容,则使用此操作.因此,应该为存档页面,单个帖子和单页(以及所有其他内容类型)正常工作.主题必须有一个 index.php 文件来工作;理论上,它可以只是这个文件和样式表.另一个常规模板文件是 404.php 的错误和 search.php 用于搜索结果.
  • 特定存档的模板显示,如类别和分类档案,让您为不同的列表显示不同的内容.例如,如果要显示一个帖子类型,则可以使用备用档案模板文件,如果要更改循环,或者要添加额外内容或小部件区域.
  • 页面模板可帮助您在不同的静态页面上显示不同的内容(例如,如果要在某些页面上显示侧栏,但不是全部).然后,您可以选择通过管理员屏幕使用的模板使用.
  • 单个帖子模板,包括自定义帖子类型模板,让您为不同的帖子类型显示不同的内容,例如,如果要以不同方式使用循环(例如,显示不同的元数据).
  • 包括,例如 header.php sidebar.php 页脚php ,可以为网站的不同区域创建模板文件的位置或模板文件,在网站的这些区域中显示不同的小部件或内容.它们不仅仅是用于标题,页脚和侧边栏-您可以使用包含在每个模板文件中将同一代码保存的包含任何地方.一个常见的例子是WordPress循环.

page attributes meta box in the wordpress page editing screen 在我的网站上我设置了许多我可以选择的页面模板在页面编辑屏幕中

WordPress如何选择模板文件

当WordPress打开您的网站上的页面时,它会检查正在显示的内容类型,然后相应地选择正确的模板文件.

用于静态页面:

  • singular.php 覆盖 index.php ,然后 page.php 覆盖两者.
  • page - $ slug.php page - $ id.php pep.php php 当一个正确的slug或id的页面正在显示
  • front-page.php extent.php 和 page.php 当您归属页面时.
  • 一个自定义模板页面,例如通过页面的管理面板选中时 page-factbar.php ,击败 page.php home.php page-$ slug.php page-$ id.php .

为单个帖子和附件:

  • singlular.php 覆盖 index.php ,以及 single.php beats.
  • 单个post.php 覆盖单个帖子时覆盖单个帖子时(与附件或自定义帖子类型).
  • 单个$ posttype.php 在显示给定帖子类型的单个帖子时拍打 Single.php .
  • 单个$ posttype-$ slug.php 为带给给定的slug的帖子击败单rostype.php .
  • 附件.php覆盖附件时覆盖 single.php
  • 自定义mime类型页面( $ mimeType.php )在查看给定MIME类型的附件时击败附件.php.例如,您可以使用 image.php video.php 或任何接受的mime类型.

用于档案:

  • home.php 为主页或主博客节拍 index.php .如果主页是主博客页面,那么 Front-Page.php 击败这两种.
  • archive.php excent.php 在查看类别,标签,日期或作者列表时.
  • 类别.php overrides归档.查看特定类别列表时.a 类别- $ slug.php 类别- $ id.php 模板在显示相关类别ID或SLUG的帖子时覆盖 Category.php .
  • tag.php 覆盖在查看标签列表时覆盖 archive.php .a 标记- $ slug.php 或tag-$ id.php 文件覆盖 tag.php .
  • author.php 覆盖 archive.php 当观看作者的帖子列表时,它又由 Author-$ ID.php粉碎作者- $ nicename.php .
  • 存档- $ posttype.php 拍打 archive.php 当正在查看给定帖子类型的列表时.
  • date.php 覆盖 archive.php 当查看给定日期的帖子列表时.
  • caxonomy.php 在查看分类学档案时覆盖 archive.php .对于特定的分类学,分类- Taxonomy.php 也将击败(其中 $分类学是分类系统,并且在分类学中术语分类- $ taxoony-$ tomm.php 将击败所有这些.

另外:

  • search.php 粉丝 index.php 当查看搜索结果时.您可能希望搜索使用归档模板,但它没有:它可以使用 index.php search.php 如果存在.
  • 404.php 在显示URL时击败所有其他帖子,因为哪个WordPress无法找到任何内容.您可以使用它来显示404页的某些自定义内容,例如错误消息和搜索框.
  • index.ph p对于Wordpress将返回它的主题是必不可少的,当显示您设置的任何其他模板的内容时,WordPress将返回到它.

工作示例

让我们想象我的网站有许多单页,一个前页,静态内容,充足的档案,帖子类型的产品以及 ProductCAT的分类系统.

我的主题有这些模板文件:

  • index.php
  • front-page.php
  • page.php
  • mypagetemplate.php
  • single.php
  • archive.php
  • 类别.php
  • caxonomy.php
  • 分类- ProductCat - Texted.php
  • 404.php
  • search.php

您认为WordPress将在我的网站中使用这些文件?

  • 主页(静态页面)
  • 一个静态页面
  • 单个帖子
  • 一个产品
  • ProductCat 分类
  • 中的特色的产品术语

  • 一个错误页
  • 一个搜索页面
  • 一个类别归档
  • 标签存档.

看看您是否可以从我的指南中锻炼,我的网站将为每个页面使用的模板文件.没有下面检查!!

这里是答案:

  • 主页: front-page.php
  • 静态页面: page.php (或 mypageTemplate.php 如果我在页面管理屏幕中选择其中)
  • 单个帖子: single.php
  • 产品: Single.php
  • productcat 分类中的特色术语的产品:分类- ProductCat - Produre.php
  • 一个错误页面: 404.php
  • 搜索页面: Search.php
  • 类别归档:类别.php
  • 一个标签存档: archive.php

你好吗?如果没有,请花一些时间通过每个时间来工作,并熟悉WordPress如何通过模板层次结构工作.

包含文件

以及模板文件,WordPress使用许多包括的包含,这些包括内容将被插入模板中.最常见的包括是标题, sidebar.php 页脚php ,所有这些都可以具有多个版本,例如 header-home.php sidebar-$ posttype.php 或您网站所需的任何东西.

要调用模板文件中的通用标题,请使用get_header():

加载GIST BBEE5A3DB0795B3E1CC863655F18B9F7

如果要创建特定标题,则包含主题上的其中一个内容类型的文件(例如主页),您可以创建一个名为标题-houd.php 的文件,然后调用它如下:

加载GIST BBEE5A3DB0795B3E1CC863655F18B9F7

这将调用 header-home.php 文件,并将其内容输出在模板文件中(哪个应该位于顶部).您可以使用此代替相关模板文件中包含的标准(在本例中 Home.php ),或者您可以在条件函数中使用它,如下所示:

加载GIST BBEE5A3DB0795B3E1CC863655F18B9F7

您可以使用它来调用其中一个包括,具体取决于用户所在网站的哪个部分.

以及标题,侧边栏和页脚包括,WordPress利用其他一些标准包括:

  • get_search_form()从主题获取 searchform.php 文件-如果不存在,则WordPress将生成搜索表单
  • comments_template()从主题获取 comments.php 文件-如果没有一个,它将包括 WP-Compress/Theme-Compat/Comments.php 来自WordPress Core.
  • get_template_part()提取自定义包括诸如循环.这有助于您仅通过编码一次更有效地使主题更有效.因此,如果您有一个 loop.php 文件并在所有模板文件中调用它,那么如果要更改循环,则只需要编辑代码.

要使用get_template_part()调用 loop.php 文件,您可以使用以下方式:

加载GIST BBEE5A3DB0795B3E1CC863655F18B9F7

模板文件和子主题

但是如果您使用子主题来修改父主题,该怎么办?您可能想知道模板层次结构如何在这种情况下工作.

好消息是,它非常简单:WordPress将通过模板文件来完成两个主题,并使用层次结构中最高的那个.如果两个主题都有相同的文件复制,那么它将使用子主题中的文件.这就是您使用子主题覆盖父主题中的模板文件的方式.

例如,我的父主题有这些文件:

  • index.php
  • front-page.php
  • page.php
  • single.php
  • archive.php
  • 类别.php
  • 404.php
  • search.php

和我的子主题有这些文件:

  • front-page.php
  • mypagetemplate.php
  • single.php
  • 类别.php
  • caxonomy.php
  • 分类- ProductCat - Texted.php

您认为WordPress的文件现在将用于每个页面?

  • 主页(静态页面)
  • 一个静态页面
  • 单个帖子
  • 一个产品
  • ProductCat 分类
  • 中的特色的产品术语

  • 一个错误页
  • 一个搜索页面
  • 一个类别归档
  • 标签存档.

答案如下.

  • 主页: front-page.php 从儿童主题
  • 一个静态页面: page.php 从父主题(或 mypageTemplate.php 如果在页面管理屏幕中选择其中)
  • 单个帖子: Single.php 从儿童主题
  • 一个产品: single.php 从儿童主题
  • productcat 分类中的特色术语的产品:分类- ProductCat -特色,来自儿童主题
  • 错误页面: 404.php 从父主题
  • 一个搜索页面: Search.php 从父主题
  • 一个类别存档: category.php 从儿童主题
  • 一个标签存档: archive.php 从父主题

请注意,如果在层次结构中的模板文件较高于子主题中的所有文件,则将使用来自父主题的文件.只有当文件复制文件主题的文件胜过父主题的文件时,或者如果子结构中的文件较高,则只有子主题的文件.

了解模板层次结构将使您更好 person 主题开发人员

phew!在这篇文章中我们已经涵盖了很多东西,我让你做一些思考.希望您现在了解模板层次结构的工作原理,并且您可以使用它来识别哪些模板文件WordPress将用于显示您网站中的页面.

模板层次结构是WordPress的一个很大的功能:它保持清晰且逻辑的东西,如果您在构建主题时参考它,则不应该出错.

11

发表回复

           
意见反馈 在线咨询 TG电报群聊 简繁切换 返回评论 返回顶部