WordPress模板層次02:模板層次結構和原理

huangbangqing12發表於2018-07-08

模板層次結構頁面

首先,開啟一個網站 wphierarchy.com,它是介紹關於模板層次結構的頁面。它可以讓你看到整個WordPress模板層次結構。這個結構的核心:簡單來說就是備胎的思想。

在這裡,我隨意點選一個模板檔案:

就可以到達WordPress官方文件關於這個模板檔案的詳細講解頁面

整個模板層次結構流程

以WordPress網站上的Singular Page為例。它是單一頁面的意思。

首先,當你編輯釋出一個頁面的時候,WordPress將會弄清楚:它是一個單獨的頁面(Single Post Page),還是靜態頁面(Static Page)?

假設這是一個靜態頁面(Static Page)。WordPress又會判斷:它使用的是自定義模板(Custom Template),

還是預設模板(Default Template)?

  • 假設是自定義模板(Custom Template),WordPress就會查詢:自定義格式(Custom.php)的模板檔案 。
  • 假設是預設模板(Default Template),WordPress就會查詢:固定格式(page-slug.php/page-id.php)的模板檔案 。

那麼,如果以上這些自定義的頁面都沒有在主題中給定,WordPress將會尋找備份的page.php模板檔案。

如果page.php還是沒有給出的話,那麼關於這個頁面,WordPress將會預設使用index.php作為模板。

備胎的思想

整個流程體現出了一種備胎的思想。也就是說,WordPress會首先考慮的是初戀:如果沒有找到初戀(PageTemplate),就找備胎1(Page.php)。最後是最通用的備胎(index.php)。

因此,如果主題中,沒有這些橙色的或自定義的特定模板檔案,那麼WordPress將預設使用index.php檔案來斷後。

Archive模板層次結構

Archive模板層次結構也是一樣的道理:

You must be logged in to view the hidden contents.

比方說,我們有一個分類頁面(Archive Page),按日期分類(Date Archive)。而且我們想要分年,月,日。那麼WordPress會首先查詢一個名為date.php的模板。如果這個date.php不存在,那麼WordPress將會查詢一個名為archive.php的模板。

archive.php不存在的話,那麼最終它將回到使用最終的備胎: **index.php **模板。

在這個流程中,可以再次看到WordPress模板備胎的思想。

原理總結

所以,總的來說,如果沒有date.php或archive.php,我們也沒有任何自定義頁面模板(Page template),那麼,不管是分類頁面(Archive Page)還是單一頁面(Singular Page)都將預設使用 index.php 模板。

實際上,設計一個可以適用於所有型別頁面的單一模板是非常困難的,我們通常會使用archive.php,single.php,page.php,home.php這些模板檔案,以及其他一些更具體的自定義型別模板,而不會到index.php這一層

相關文章