WordPress如何选择存档类型模板?

时间:2012-05-22 作者:ivavid

我找不到WordPress如何确定选择哪种存档类型模板的全面标准列表。

据我所知,它使用URL表单来实现此目的,例如:

example.com/category/some-category -> category.php (i guess tags work similarly)
example.com/2012 -> date.php
但作者呢。php和分类法。php?是什么触发模板层次结构来使用这些路由?

我不知道WP是如何为我选择某些我不知道如何触发的模板的。我想我理解具有更高特异性的类别模板和归档。在开始索引之前,我把php理解为一个包罗万象的东西。php,但我不知道WP何时会选择author作为示例。php及其原因。

例如,假设我有两篇同一作者的帖子。如何使WP使用作者。php模板向我展示作者的帖子?

我想模板层次结构图中每个框周围的注释应该能提供一些关于这方面的线索,但我不明白这些代码应该在何时何地使用。我确实看过层次结构图,但有些事情我不明白,这也是我提出这个问题的部分原因。

例如,我无法从图表中读取表单示例上是否有URL。com/2012它将使用日期。php模板。这是有道理的,但我看不出URL应该是任何形式,尤其是这个。

总的来说,我很难理解WordPress如何选择要采用的模板(路线)。我可能误解了,但我希望WordPress在开始解释其内容之前确定使用哪个模板。此时,它可以根据其内容并使用is\\u sometype()函数显示您想要的任何内容。我不明白的是它是如何达到这一点的。我是不是把这个推理搞错了?如果有人能解决这一点,我将不胜感激。

编辑:Chip回答后的一些后续问题:

我是否正确理解WP使用重写规则解析永久链接以构建查询,或者查询已经是“本机”格式,即URL后跟?以及查询变量的串联?两者是否可以同时发生?

关于查询,“当前上下文”的定义是什么?你能举个例子吗?

蓝色是什么。关键词表示芯片图中每个方框的下方?

2 个回复
SO网友:Chip Bennett

WordPressuses a Template Hierarchy 要根据当前上下文确定要加载的模板文件,请执行以下操作:

WordPress Template Hierarchy

此图是\\wp-includes\\template-loader.php, 包含基于上下文的模板选择逻辑。

关于您的具体问题:

例如,假设我有两篇同一作者的帖子。如何使WP使用作者。php模板向我展示作者的帖子?

WordPress会自动执行此操作。假设已启用相当多的永久链接,则给定作者的作者存档为:example.com/author/{author}

例如,我无法从图表中读取表单示例上是否有URL。com/2012它将使用日期。php模板。这是有道理的,但我看不出URL应该是任何形式,尤其是这个。

我想你是在向后走。同样,如果您启用了相当长的永久链接,并且正在查看给定年份、月份或日期的基于日期的存档,则URL将为:

  • example.com/{year}
  • example.com/{year}/{month}
  • example.com/{year}/{month}/{day}
但最重要的是:这些都与模板层次结构没有直接关系。无论permalink结构如何,WordPress都会问:“这是日期存档吗?”如果是,WordPress会使用基于日期的存档模板层次结构来确定要加载的模板文件。

总的来说,我很难理解WordPress如何选择要采用的模板(路线)。

模板层次结构回答了所有这些问题。:)

我可能误解了,但我希望WordPress在开始解释其内容之前确定使用哪个模板。

确实如此。

此时,它可以根据其内容并使用is\\u sometype()函数显示您想要的任何内容。

当然,你可以;但是,如果您正在使用/加载一个更具体的、基于上下文的模板文件,则不需要这样做。例如,如果您正在加载date.php, 您不需要使用is_date() 有条件的如果加载了模板文件,则已知为真。

我不明白的是它是如何达到这一点的。我是不是把这个推理搞错了?如果有人能解决这一点,我将不胜感激。

开始的地方是query 自身,包含/定义当前上下文:

在查询中构建查询,根据当前上下文定义当前上下文,确定要加载的模板文件I have a more-advanced version of the Template Hierarchy diagram, 它合并/关联所有基于上下文的条件。这可能有助于理解过程。

编辑以解决其他问题:

我是否正确理解WP使用重写规则解析永久链接以构建查询,或者查询已经是“本机”格式,即URL后跟?以及查询变量的串联?两者是否可以同时发生?

一般来说,重写规则是一个单独(尽管相关)的主题。如果你对重写规则有具体的问题,我会搜索该网站,或者问一个单独的问题。

这就是说:重写规则就像上下文/模板一样,是从查询中派生出来的。WordPress确定基于上下文的模板是否使用重写规则。

关于查询,“当前上下文”的定义是什么?你能举个例子吗?

同样,您必须返回查询。查询是一个确定/定义/保存所有上下文信息的对象。看看the WP_Query() class in source, 如果你想了解细节。

从本质上讲,上下文是由URL query variables. (注意:这不是关于永久链接或重写规则,它们也使用相同的基础URL查询变量。)你可以看到the query variable parsing in action here.

蓝色是什么。关键词表示芯片图中每个方框的下方?

这些是添加到body_class(), 基于上下文。

SO网友:Monirul Islam

           1. category-{slug}.php - If the category\'s slug were news, WordPress would look for category-news.php
           2. category-{id}.php - If the category\'s ID were 6, WordPress would look for category-6.php
           3. category.php
           4. archive.php
           5. index.php 
这应该行得通。如果你需要了解更多,请告诉我。

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。