WordPress 模板層次結構簡介
已發表: 2019-12-11WordPress 用戶在他們生活中的某個時候提出的關鍵問題之一如下:WordPress 主題如何根據我們看到的內容來顯示不同的頁面?
這個問題除了完全合法之外,還非常有趣。 WordPress 能夠識別它要呈現的內容,並根據其類型使用一個模板或另一個模板。 WordPress 主題只不過是針對每種內容類型的一組特定模板,其中包含一些用於動態元素的 JavaScript 和用於樣式和顏色的 CSS。
完美,但是……WordPress 模板實際上是如何工作的? 這就是我們將在這篇文章中逐步看到的內容。
不過,在我們開始之前,讓我給你看一張圖片,上面有這個問題的答案:

這是 WordPress 模板層次結構。 您可以在官方文檔 WordPress Codex 中找到有關它的所有信息。 您甚至可以在這個很酷的網站中與這個層次結構進行交互。
基本上,WordPress 使用模板層次結構來呈現其內容。 也就是說,WordPress 在您為特定 PHP 文件激活的主題中搜索。 如果存在,WordPress 會使用該文件呈現內容,我們稱之為模板。 如果沒有,WordPress 會在層次結構中查找下一個最通用的模板。 如果存在,WordPress 會使用它。 否則,WordPress 會在層次結構中查找下一個模板……以此類推。 如果 WordPress 在您的主題中找不到特定的模板文件,它會使用默認的index.php文件,這是所有模板中最通用的。
現在,讓我們深入了解一些最常見的 WordPress 內容的模板層次結構。
頁面模板
讓我們看看 WordPress 用於呈現頁面和簡單內容類型的模板。
帖子和自定義帖子類型
WordPress 在您的主題上查看以下 PHP 文件以呈現博客文章或自定義文章類型:
-
single-{post-type}-{slug}.php:如果您想要特定帖子或特定帖子類型的特定模板,則必須在主題中創建此 PHP 文件。 它的名稱包括帖子類型名稱 ({post-type}),它可以是post或其他任何名稱 ( product ,如果您使用 WooCommerce )。 而且您還必須以模板的名稱鍵入 slug 或永久鏈接,隨心所欲地稱呼它。 例如,如果我想為這篇文章使用特定模板,我必須創建single-post-introduction-to-the-wordpress-template-hierarchy.php文件。 -
single-{post-type}.php:如果我們想影響特定帖子類型的所有內容(所有帖子或所有產品),我們將使用此模板,其名稱僅包含帖子類型的名稱。 -
single.php:WordPress 使用此模板來呈現任何單個內容(特定帖子、特定產品等)。 -
singular.php:這是另一個用於呈現任何類型的單一內容的頂級模板。 -
index.php:如果以上都沒有找到,WordPress 使用這個通用模板來呈現您的內容。
請記住,在 WordPress 主題目錄中,您可以使用數以千計的 WordPress 主題示例。 作為學習練習,我建議您下載一個並嘗試檢查其 PHP 文件並識別我剛剛提供的模板。
通過這樣做,您可以了解他們在 WordPress 模板的層次結構中使用哪些模板,並查看每個模板具有哪些內容。 毫無疑問,如果您想了解 WordPress 主題,這是必須要做的事情。 此外,它是免費的!
常規頁面
與帖子和其他帖子類型一樣,WordPress 使用模板層次結構來呈現頁面:
- 選定模板:如果在編輯頁面時從頁面屬性框中選擇特定模板,則它始終優先於所有其他模板。 您可以在此處學習創建自定義模板。
-
page-{slug}.php:如果您希望特定頁面擁有自己的模板,請在名稱中包含頁面 slug 的 PHP 文件中創建該模板。 -
page-{id}.php:您也可以直接使用應用模板的 WordPress 頁面 ID。 -
page.php:此模板適用於所有 WordPress 頁面,除非層次結構中的先前模板之一已被應用。 -
singular.php:單數模板是所有頁面、帖子、產品等的默認模板。 這個模板很少被應用,因為 WordPress 中的大多數主題已經包含一個page.php模板。 -
index.php:與往常一樣,這是 WordPress 的默認後備模板。
現在嘗試再次檢查您之前下載的主題,您會發現現在您對那裡出現的其他文件有了更多的了解。 當然,您現在可以識別頁面模板的 PHP 文件。
特殊頁面
在 WordPress 中,還有其他特殊頁面也使用特定模板來呈現內容。 這方面的一個例子是網站的主頁。 請記住,在閱讀子菜單中的 WordPress設置中選擇了主頁。 以下模板層次結構用於該頁面:

-
front-page.php:如果您在 WordPress 中使用靜態頁面作為主頁,它將首先嘗試應用front-page.php模板。 -
home.php:如果沒有找到之前的模板,WordPress 會嘗試使用這個模板。 如果您沒有選擇靜態頁面作為主頁,而是選擇了顯示最新帖子的選項,也可以使用此模板。 -
index.php:同樣,默認模板始終存在。
顯示您的 WordPress 搜索結果的頁面也是一個特殊的頁面,可以有自己的模板。 為此,您可以使用search.php模板。 如果您的主題沒有定義它, index.php將照常使用。
最後,您的網站返回 404 錯誤時顯示的頁面也可以使用特定的 WordPress 模板進行配置。 您必須在主題中創建404.php文件,然後將應用此模板。
檔案模板
到目前為止,我們已經看到了單一內容的模板(搜索結果除外)。 但在 WordPress 中也有存檔,它可能會在頁面中呈現多個元素。 讓我們看看在這種情況下 WordPress 使用的模板層次結構。
類別和標籤
WordPress 對類別使用以下模板層次結構:
-
category-{slug}.php:此模板用於呈現屬於特定類別的內容列表(通常是帖子)。 特別是,它會在渲染其 slug 出現在 PHP 文件名中的類別時使用。 -
category-{id}.php:如果您更喜歡使用類別 ID 而不是 slug,您也可以這樣做。 例如,如果要將模板應用於類別 13,請創建名稱為category-13.php的模板文件。 -
category.php:所有類別的默認模板。 -
archive.php:這是 WordPress 中最通用的檔案模板。 -
index.php:同樣,如果您的主題不包含更具體的模板,WordPress 將默認使用此文件。
以下模板層次結構用於標籤:
-
tag-{slug}.php:如果標籤名為interview ,我們可以使用tag-interview.php模板,以防我們想在 WordPress 中為該標籤設計一個特定的模板。 -
tag-{id}.php:我們也可以通過標籤ID來定義模板。 -
tag.php:與category.php一樣,這是標籤的通用模板。 -
archive.php:同樣,如果以上都不存在,將使用此模板。 -
index.php:與往常一樣,這是備用模板。
自定義帖子類型和自定義分類法
如果我們有自定義內容類型,我們可以使用模板archive-{post_type}.php其中post_type是自定義帖子類型的slug 。 這將呈現該帖子類型的內容列表。
對於自定義分類法,WordPress 使用以下模板層次結構:
-
taxonomy-{taxonomy}-{term}.php:如果您在 WordPress 中有一個名為videogames的自定義分類法,並且想要為該分類法中的術語運動創建具有特定設計的模板,則必須創建文件taxonomy-videogames-sports.php使用該模板。 -
taxonomy-{taxonomy}.php:如果您想對所有分類術語使用相同的模板,只需使用前面示例中的taxonomy-videogames.php即可。 -
taxonomy.php:這是所有分類的默認模板。 -
archive.php:如果上述模板都不存在,則適用。 -
index.php:同樣,這是默認的後備模板。
通過所有這些解釋,您應該已經擁有在 WordPress 主題中創建和識別模板所需的一切。
總結
了解 WordPress 模板的層次結構是理解主題甚至開發自己的主題的關鍵。 當您開始修改您在我們的 WordPress 中使用的主題的 PHP 代碼時,看看它並知道它是如何獲得信心的,這永遠不會有什麼壞處。
還有一些其他的模板,但很少使用。 無論如何,請記住您可以隨時查看 WordPress Codex 文檔。 在那裡你會找到這裡沒有解釋的一切。
你怎麼看這一切? 您是否仍在為您的 WordPress 內容使用模板,或者您是否已經使用塊構建了所有設計? 如果您已經到達帖子的末尾,請不要忘記在下面給我留言 - 我很想知道您如何使用 WordPress 模板!
Edvard Alexander Rlvaag在Unsplash上的特色圖片。
