如果您需要更多一点以了解您在看什么…
WORDPRESS模板层次结构:什么,为什么以及如何
大卫·海斯/ 2017年5月23日
WordPress模板层次结构是主题开发人员一生中最具影响力的事物之一。用户可能需要了解它,插件可能需要与之交互,但是通常主题是所有与模板层次结构有关的。
这是因为WordPress模板层次结构确定了在给定时间使用主题中的哪个文件。也就是说:模板层次结构是WordPress创作者创作艺术品的基础。
本文的目的是进一步阐明这种想法。我们将定义模板层次结构的作用,为什么需要了解它是WordPress网站的有效修饰符,我们将讨论如何使用它以及(非常简短地)它如何工作。
什么是模板层次结构?
从本质上讲,模板层次结构是WordPress用于确定主题文件中的哪个文件将用于为WordPress网站给定页面生成完整的最终HTML的选择结构。
WordPress需要有一种方法来知道如何与主题进行交互。有人可能会为主题编写各种不同类型的复杂PHP逻辑,这些逻辑向WordPress解释了如何与之交互。可能是与每个主题都需要响应的WordPress定义的接口(从面向对象的编程意义上)相匹配的PHP类。
但这很复杂,要阅读,更不用说要做。这正是模板层次结构的重点:要使WordPress成功地能够使用不同的主题,同时又使创建和修改主题相对容易,则需要一种更简单的解决方案。这就是模板层次结构。
从本质上讲,模板层次结构是WordPress用于确定主题文件中的哪个文件将用于为WordPress网站给定页面生成完整的最终HTML的选择结构。
WordPress主题中的大多数文件实际上都是模板层次结构的成员,并且WordPress将根据要显示的信息类型选择调用其中之一。
遍历模板层次结构
如果WordPress需要在WordPress网站上显示特定作者(用户)的帖子(或任何内容类型),则有几个需求。主要:
- 它需要使制作或修改主题的人可以轻松自定义页面
- 它需要确保,如果不需要自定义,它将可以使用一些东西
为此,模板层次结构将在当前活动的主题中尝试不同的文件。如果它们存在,它将使用它们。如果他们不这样做,它将继续前进。
因此,在希望找到利用呈现给定作者所有职位的模板,让我们作出这样的作者用户名“大卫”谁拥有一个数字id
的3
。(肯定是巧合。; p)WordPress需要知道您当前主题中要使用的文件。因此,这是主题文件的外观:
- 该文件
author-david.php
存在吗?没有… - 该文件
author-3.php
存在吗?没有… - 该文件
author.php
存在吗?没有… - 该文件
archive.php
存在吗?没有… - 该文件
index.php
存在吗?是!
您会注意到WordPress接受“是”之前有五个“否”。它们中的每一个以及以下问题都是模板层次结构。一旦WordPress对这些问题之一“是”,模板层次结构的角色即告完成。但这确实很重要。
找到的文件负责整个页面的HTML。从字面上看,WordPress所做或在您网站的页面上显示的任何内容都来自主题中的单个模板层次结构文件。(您可能已经知道,这并不意味着WordPress所做的所有工作都被塞入了该文件,但是其他工作项被引入的方式不在本文的讨论范围之内。)
因此,构成模板层次结构的是这些问题(WordPress根据要访问的URL决定要查找的问题)。就是这样,如果您没有index.php
,就没有WordPress主题。那是模板层次结构每个部分的最后一站。
终极后备:什么和为什么
正如我刚才所说,如果没有index.php
,您将没有WordPress主题。但是,如果有一个文件,则实际上不需要模板层次结构中可能使用的任何其他文件。另一件事要实现。
就像我们上面说过的那样,WordPress需要确定它始终能够为最终用户创建页面。主题必须提供这一点。这就是模板层次结构的目的。但这是绝对必要的,这就是为什么WordPress不允许您启用没有index.php
文件的主题的原因。
为什么存在WordPress模板层次结构
模板层次结构的存在使主题设计人员和开发人员可以更轻松地自定义WordPress网站的外观。客户将其博客的“标签归档”页面与单帖子页面不同的情况非常普遍。因此,WordPress的模板层次结构支持该需求。
正如我们上面提到的,人们可以想到模板层次结构的替代方案。但是它们很少有什么用。从根本上讲,这就是模板层次结构存在的全部原因。
儿童主题快速讨论
如您所知,WordPress具有这些称为子主题的东西。确实,WordPress子主题是喜爱模板层次结构的一半以上的原因。子主题是设计师和开发人员可以对网站的特定页面进行细微调整的方式,而不必自己创建整个主题。
儿童主题的完整设计是本文讨论之外的主题。要了解更多有关孩子的主题,你会得到很好的这些服务的2 篇关于WPShout,或这一个在WordPress.org网站。
有关子主题的核心知识是WordPress模板层次结构可以识别它们并与之配合使用。因此,如果使用子主题,我之前解释的有关在上方查找作者模板文件的解释实际上有所不同。如果是这样,它将看起来像:
- 该文件是否
author-david.php
存在于子主题中?没有… - 该文件是否
author-david.php
存在于父主题中?没有… - 该文件是否
author-3.php
存在于子主题中?没有… - 该文件是否
author-3.php
存在于父主题中?没有… - 该文件是否
author.php
存在于子主题中?是!
您会注意到,要深入了解模板层次结构,还有更多步骤。您还会注意到,总是先检查子主题。这是关于模板层次结构和子主题的非常重要的事情-它们的文件总是比关注模板层次结构的父文件的文件好。
为什么需要了解WordPress模板层次结构
在不完全了解模板层次结构的情况下进行主题化几乎是不可能的。您也许可以做到,但感觉就像是令人困惑和神秘的魔术。
如果您要尝试这样做,也有助于了解一些使模板层次结构更清晰的插件:哪个模板和显示当前模板。两者都做同一件事(如果您也了解模板层次结构,这将很有用):它们告诉您使用哪个模板层次结构文件来构建给定页面。他们俩实际上告诉您的信息还不止这些,但这是他们的主要用途(至少对我而言)。
为什么需要了解模板层次结构并了解其结构(即使使用工具带中的哪个模板),也是因为您将使用它来“覆盖”。对于儿童主题而言,“覆盖”就像在您的儿童主题中创建具有相同名称的文件并称其为“好”一样容易。但是,当您尝试更加具体时,您需要参考模板层次结构图。那就是我一直访问wphierarchy.com的地方。WordPress.org和Google图片搜索都有一个图表。但是,从空闲状态访问此站点要比从此站点更快。
如何使用WordPress的模板层次结构
如果您线性阅读,我想您已经对这个问题有了一个很好的答案。但这是互联网,我知道人们在浏览。您可以通过创建主题来使用模板层次结构。无论是自给自足的主题,还是依赖于“父”的“子”主题,从根本上来说,主题的文件都是您更改模板层次结构使用方式的方式。
基本上,您将创建与模板层次结构中要更改页面外观的位置匹配的文件。因此,如果您要使单个页面的HTML外观不同,则可以指定页面模板,或在主题中插入该帖子的ID的文件中。
这些都不是完美的。但这从根本上就是它的工作方式。
模板层次结构如何在WordPress代码中工作
“ WordPress模板层次结构如何工作?” 这实际上是一个学术问题,几乎没有WordPress开发人员需要答案。但是,有一天,我发现自己只是在随便想知道,于是我抬起头来。这篇文章出来了:
对于那些有兴趣阅读但又没有足够点击兴趣的人来说,简短的答案是PHP代码中的一堆if
s和elseif
s。不多。并不是WordPress强大而重要的方面所依据的最优雅的代码,但是它可以很好地运行并启用您在WordPress中曾经知道和喜爱的所有主题。太酷了!
进一步阅读模板层次结构
如果您不熟悉本文中的某些概念,或者只需要复习一下,请查阅我们提供的其他文章。首先,给初学者两个:
然后,对于那些希望更深入,更深入地思考模板层次结构,其工作方式以及如何使用它的人:
现在您知道了WordPress模板层次结构!
希望有了这个工作,您对WordPress模板层次结构有了很好的了解:这是WordPress与主题进行交互的方式,以确定如何构建将向网站访问者显示的HTML。并希望您也理解WordPress为什么具有模板层次结构(用于使主题与之配合使用)以及为什么要使用它(更轻松地通过主题自定义网站页面)。我希望您也知道如何与之交互:通过添加或删除与之交互的文件。有了这个,快乐的黑客!