我真的对index.phphome.phpfront-page.php感到困惑。在许多情况下,即使我有一个index.php,我也会用front-page.php覆盖它。但是最近,我开始了解home.php了。


home.phpindex.php有什么区别?
使用home.php而不是index.php的理想条件是什么?
使用front-page.php的理想条件是什么?
当我使用front-page.php时,那么index.php会为我做什么具体任务?

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

评论

@rarst带有:rarst.net/wordpress/front-page-logic。可能会帮助您。

#1 楼

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

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


home.phpindex.php有什么区别?


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

index.php是通用模板。这是模板层次结构所有分支中的最终选择,对于其他存档和单个视图,在没有其他合适的条件时将被选择。 。


使用home.php而不是index.php的理想条件是什么?


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

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

某些主题选择使用空的home.php并确保针对所有可能的情况使用更具体的模板,因此


使用index.php的理想条件是什么?


index.php用于根目录或静态目录的帖子索引

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

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


当我使用front-page.php时,那么front-page.php会为我做什么具体任务?


front-page.php仍然是所有其他情况的所有模板。

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

#2 楼

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文件是默认的后备模板模板层次结构中的所有上下文。仅在当前上下文中不存在更特定的模板文件时才使用。

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


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(无编码) ?

–杰克·约翰逊(Jack Johansson)♦
17年5月30日在18:06



#3 楼

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

home.php用于以下情况:


您网站的首页设置为显示帖子列表,或


设置了静态首页,并且
访问者转到您定义为“帖子列表”的页面(例如http://example.com/blog/


主题有一个home.php文件

如果不满足最后一个条件-即主题中没有home.php文件-那么index.php

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



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

如果不满足最后一个条件,即

总结

如果要自定义帖子列表,请使用front-page.php
如果要自定义您的员工tic主页,请使用index.php

评论


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

–芯片Bennett
13年8月16日在20:25

#4 楼

简而言之:如果找不到合适的模板,则index.php仅是一个备用模板,如果未找到合适的模板

home.php用于博客(清单的最新帖子)

front-page.php用于登录页面

通用index.php模板

index.php模板文件是后备模板。当没有其他合适的模板可用时,它将用作最后的选择。例如,如果您既没有front-page.php也没有home.php,那么将使用index.php。对于缺少archive.phpsingle.php等的情况也是如此。顾名思义,它用作站点的主要首页,而front-page.php则应成为“博客”部分的主页。

home.php模板(如果存在)将用于网站的首页(例如front-page.php)。如果不存在,则将使用home.php。如果同时缺少front-page.phphome.php模板文件,则将使用front-page.php后备模板。

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

如何配置登录页面和博客页面?主页,请转到WordPress Admin,在“工具”>“阅读”下,您可以配置“首页显示”以显示静态页面或您的最新帖子。

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



#5 楼

取自Wordpress模板层次结构


主页显示

默认情况下,WordPress设置您网站的主页以显示您的最新博客文章。此页面称为博客文章索引。您还可以
将博客文章设置为显示在单独的静态页面上。
模板文件home.php用于呈现博客文章索引,无论它是用作首页还是单独的静态页面。如果
home.php不存在,WordPress将使用index.php。



home.php

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将显示什么的最佳方法。


模板层次结构图:


#6 楼

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


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

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



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

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