問題描述
我真的很困惑與 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.phpandindex.php?
home.php 是帖子索引的模板 (本機帖子類型的歸檔,這是 WP 中的一個特殊情況) 。 WP 將嘗試查找帖子的索引,無論它們是顯示在網站的根目錄還是在專用帖子頁面。
index.php 是全面的模板。它是模板層次結構的所有分支的最終選擇,當沒有其他適合的檔案和單一視圖時,它將被挑選。
只有帖子索引可以使用 home.php,但所有其他上下文可能會使用 index.php 。
What’s the ideal condition to use a
home.phpthan 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.phpthen what specific task anindex.phpis 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(#替換為 @) 。
