问题描述
我真的很困惑与 index.php
,home.php
和 front-page.php
。在很多情况下,即使我有一个 index.php
,我用 front-page.php
覆盖。但是最近,我意识到 home.php
。
-
home.php
和index.php
有什么区别? -
home.php
比index.php
使用的理想条件是什么? -
使用
front-page.php
的理想条件是什么? -
当我使用
front-page.php
时,index.php
正在为我做什么具体任务?
我在食品法典中阅读了 Template Hierarchy 。请不要将我的问题与页面模板混合起来,我明白了,alHamduLILLAH 。
最佳解决方案
前台逻辑是 WordPress 中最令人困惑的功能之一,非常难以解释和总结。正如在评论中提到的那样,我烧了不正之间的时间把我的 front page logic cheat sheet 放在一起。
但是,由于这是一个受欢迎的线索,我可以尝试回答这些具体问题。
What’s the difference between the
home.php
andindex.php
?
home.php
是帖子索引的模板 (本机帖子类型的归档,这是 WP 中的一个特殊情况) 。 WP 将尝试查找帖子的索引,无论它们是显示在网站的根目录还是在专用帖子页面。
index.php
是全面的模板。它是模板层次结构的所有分支的最终选择,当没有其他适合的档案和单一视图时,它将被挑选。
只有帖子索引可以使用 home.php
,但所有其他上下文可能会使用 index.php
。
What’s the ideal condition to use a
home.php
than anindex.php
您可以使用 home.php
自定义帖子索引。
您可以使用 index.php
在主题中提供最通用的模板,适合显示任何内容。
某些主题选择拥有空的 index.php
,并确保它们具有更多特定的模板,适用于所有可能的情况,因此它不会被使用。
What’s the ideal condition to use a
front-page.php
?
front-page.php
用于根或静态首页上的帖子索引 (如果启用) 。
它是一个高优先级的模板,所以如果主题有它,你不能为静态首页选择任意模板。由于这个原因,几乎从未包含在公开发行的主题中 (这是正确的) 。
最好的用途是在私人项目中,因为它比页面模板更容易配置。
When I’m using a
front-page.php
then what specific task anindex.php
is doing for me then?
index.php
仍然是所有其他情况下的所有模板。
如果您使用静态首页 (front-page.php
将应用于此),则您的帖子页将尝试使用 home.php
,然后使用 index.php
。
次佳解决方案
front-page.php
文件是网站首页模板。无论 get_option( 'show_on_front' )
是否设置为 page
或 posts
,都将始终在您的网站首页使用。
home.php
模板文件是博客帖子索引模板。它将始终用于显示您的博客帖子索引,无论博客帖子索引是显示在网站首页还是在其他页面上。
在存在 front-page.php
和 home.hpp
的情况下,将 get_option( 'show_on_front' )
设置为 posts
(即站点首页显示博客帖子索引) 时,front-page.php
文件将优先于 home.php
文件。
index.php
文件是 Template Hierarchy 中所有上下文的默认后备模板。仅当当前上下文中不存在 more-specific 模板文件时才使用它。
站点首页的模板层次结构如下:
-
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
第三种解决方案
所有这一切都来自于对 Template Hierarchy 的全面阅读。
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
。
第四种方案
简而言之:
-
index.php
只是一个后备模板,如果没有找到适当的模板 -
home.php
用于博客 (最近的帖子列表) -
front-page.php
用于 landing-page
通用 index.php
模板
index.php
模板文件是一个后备模板。当没有其他更合适的模板可用时,它被用作最后的手段。例如,如果您没有 front-page.php
或 home.php
,则将使用 index.php
。缺少 archive.php
或 single.php
也是如此。
关于 front-page.php
VS home.php
现在,front-page.php 和 home.php 模板之间的区别是使用 front-page.php 作为网站的主要 front-page,而 home.php 则是 Blog 部分的主页。
我的网站的 landing-page 将使用什么模板?
front-page.php
模板 (如果存在) 将用于该网站的主要主页 (例如 http://www.example.com/
) 。如果不存在,则使用 home.php
。如果 front-page.php
和 home.php
模板文件都丢失,则将使用 index.php
后备模板。
什么模板将用于我的博客页面?
WordPress 允许您在与 landing-page(例如 http://www.example.com/blog/
) 不同的页面上有一个”Blog” 页面 (将列出最近的帖子) 。所以如果你的网站是这种情况,那么 Blog 页面将始终使用 home.php
模板。如果 home.php
不存在,则将使用 index.php
后备模板。
如何配置 landing-page 和博客页面?
要配置在首页上显示哪些内容,请转到 WordPress 管理员,在 「工具」>「阅读,您可以配置 「首页显示」 来显示一个静态页面,或者您最新的帖子。
在这种情况下你选择的头版上显示一个静态页面,那么你还可以选择设置为博客页面 (这将使用 home.php
模板) 的占位符使用哪个页面的可能性:
参考文献
注:本文内容整合自 google/baidu/bing 翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:gxnotes#qq.com(#替换为 @) 。