模板层次结构:与index.php,front-page.php,home.php混淆


36

我真的很困惑着index.phphome.phpfront-page.php。在很多情况下,即使我有一个index.php,我也会用front-page.php。但是最近,我意识到了home.php

  • home.php和之间有什么区别index.php
  • 使用a home.php比a的理想条件是index.php什么?
  • 使用的理想条件是front-page.php什么?
  • 当我使用时,front-page.php那么您index.php正在为我执行什么具体任务?

我已经阅读了Codex中的模板层次结构。请不要将我的问题与页面模板混淆,我理解他们,alHamduLILLAH。


1
在此获得@rarst:rarst.net/wordpress/front-page-logic。可以帮助您。
Mayeenul Islam

Answers:


34

头版逻辑是WordPress中最令人困惑的功能之一,异常难以解释和总结。正如评论中提到的那样,我花费了大量的时间来整理我的首页逻辑备忘单

但是,由于这是一个受欢迎的话题,让我尝试回答您遇到的那些非常具体的问题。

home.php和之间有什么区别index.php

home.php是帖子索引的模板(本机帖子类型,这是WP中的一种特殊情况)。WP会尝试查找帖子索引,无论它们显示在网站的根目录还是专用的帖子页面。

index.php是捕获所有模板。这是模板层次结构所有分支中的最终选择,并且在其他条件都不适用时(对于归档和单个视图)都将选择它。

只有posts索引可以使用home.php,但所有其他上下文都可以并且将使用index.php

什么是使用的理想状态home.phpindex.php

您用于home.php自定义帖子索引。

您可以index.php在主题中提供最通用的模板,以适合任何显示。

一些主题选择index.php保留为空,并确保在所有可能的情况下都具有更具体的模板,因此不必使用它。

使用的理想条件是front-page.php什么?

front-page.php 用于启用根目录或静态首页上的文章索引。

这是一个高优先级的模板,因此,如果有主题,则不能为静态首页选择任意模板。因此,它几乎从未包含在公开发布的主题中(这是正确的)。

最好的用途是在私人项目中,因为它比页面模板更容易配置。

当我使用时,front-page.php那么您index.php正在为我执行什么具体任务?

index.php仍然包罗万象的模板所有其他情况。

如果您使用静态首页(front-page.php适用于该页面),则您的帖子页面将尝试使用home.php,然后再使用index.php


28

front-page.php文件是站点首页模板。无论将其get_option( 'show_on_front' )设置为page还是,它将始终在您的网站首页上使用posts

home.php模板文件是博客文章索引模板。无论博客文章索引显示在网站首页还是其他页面上,它始终将用于显示博客文章索引。

在这两种情况front-page.phphome.hpp存在,并且get_option( 'show_on_front' )设置为posts(即该网站头版显示博客文章的索引),该front-page.php文件将优先于home.php文件。

index.php文件是Template Hierarchy中所有上下文的默认回退模板。仅当当前上下文中不存在更特定的模板文件时,才使用它。

网站首页的模板层次结构为:

  • front-page.php
  • 如果'page' == get_option( 'show_on_front' ):页面层次结构
  • 如果'posts' == get_option( 'show_on_front' ):博客文章索引层次结构

博客文章索引的模板层次结构为:

  • home.php
  • index.php

页面的模板层次结构为:

  • 自定义页面模板
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php

因此,如果我做对了,my-template-1当首页设置为最新帖子时就无法使用模板,而当首页my-template-2设置为静态页面时(没有编码)就无法使用模板吗?
杰克·约翰逊

18

所有这些都来自对模板层次结构的透彻阅读。

home.php 用于以下情况:

  • 您网站的首页设置为显示帖子列表,或者
    • 设置了静态首页,并且
    • 访客进入您定义为“帖子列表”的页面(例如http://example.com/blog/
  • 并且主题有一个home.php文件

如果不满足最后一个条件(即home.php主题中没有文件),index.php则将被加载。

front-page.php 将在以下情况下使用:

  • 设置了静态首页,并且
  • 访问者会转到您定义为“静态首页”的页面(即http://example.com/),然后
  • 主题有一个front-page.php文件

如果不满足最后一个条件(即front-page.php主题中没有文件),index.php则将被加载。

综上所述

如果要自定义帖子列表,请使用home.php
如果要自定义静态主页,请使用front-page.php


2
home.php无论位置如何,都将用于博客文章索引。如果首页设置为显示博客文章索引,home.php则将使用(如果front-page.php不存在)。
Chip Bennett

10

简而言之:

  • index.php 仅作为后备模板,以防找不到合适的模板
  • home.php 用于博客(最新帖子列表)
  • front-page.php 用于登陆页面

通用index.php模板

index.php模板文件是一个备用的模板。当没有其他合适的模板可用时,它将用作最后的选择。举例来说,如果你没有一个front-page.php也没有home.php那么index.php将被使用。这也是缺少真正的archive.phpsingle.php等。

关于front-page.phpVShome.php

现在front-page.phphome.php模板之间的区别在于,front-page.php顾名思义,模板被用作站点的主要首页,而模板则被用作博客部分home.php的主页。

我的网站的目标网页将使用什么模板?

front-page.php模板(如果存在)将用于网站的首页(例如http://www.example.com/)。如果不存在,则将home.php代替使用。如果front-page.phphome.php模板文件均丢失,则将使用index.php后备模板。

我的博客页面将使用什么模板?

WordPress允许您在与登录页面(例如)不同的页面上有一个“博客”页面(将列出最近的帖子http://www.example.com/blog/)。因此,如果您的网站上属于这种情况,那么Blog页面将始终使用该home.php模板。如果home.php不存在,则将使用index.php后备模板。

如何配置登录页面和博客页面?

要配置要在首页上显示的内容,请转至WordPress Admin,在“ 工具”>“阅读”下,您可以配置“ 首页显示 ”以显示静态页面或最新帖子。

如果您选择在首页上显示静态页面,则还可以设置将哪个页面用作Blog页面的占位符(它将使用home.php模板):

在此处输入图片说明


3

取自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的模板层次结构


2

当设置了各种“首页”显示选项时,我决定测试以下每个页面使用的模板。

  • example.net
  • example.net/home/
  • example.net/blog/

结果相当长,但可以用作参考或备忘单。

首页显示

来源:WordPress中的front-page.php和home.php模板有何不同?

编者注:我试图在此处复制和粘贴表格,但需要markdown格式而不是HTML。如果可以,请转换为减价。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.