問題描述
我真的很困惑與 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(#替換為 @) 。