WordPress模板的定義非常方便,但是在定制模板之前,我們有必要知道WordPress的模板層次,了解WordPress是如何加載模板文件的,這將有利于開發(fā)模板時(shí)合理利用資源及提高工作效率。
萬(wàn)能的index.php
通過“WordPress主題構(gòu)成”這篇文章,我們已知道一個(gè)最簡(jiǎn)單的WordPress主題只需要 style.css 和 index.php 文件即可。這代表著 index.php 可以是任何一個(gè)頁(yè)面的模板,無論是首頁(yè),還是文章頁(yè),或是分類頁(yè),再或者是搜索結(jié)果頁(yè)面,它都能完美勝任。
也就是說,當(dāng)對(duì)應(yīng)的模板不存在時(shí), index.php 將是WordPress最后的底牌。
模板加載順序
下面讓我們來了解一下WordPress都是怎么加載模板的
首頁(yè)
首先WordPress會(huì)先檢查是否有靜態(tài)首頁(yè),如果有靜態(tài)首頁(yè),就會(huì)加載這個(gè)頁(yè)面內(nèi)容并通過 front-page.php 模板文件展示,如果沒有這個(gè)模板文件,就會(huì)通過頁(yè)面模板展示如果沒有靜態(tài)首頁(yè),就會(huì)加載 home.php 最新文章模板 如果沒有 home.php 則加載 index.php模板
文章頁(yè)
首先被考慮的是 single-{post_type}.php 這樣一個(gè)模板文件(如文章類型是 product 那么對(duì)應(yīng)的文件名就是 single-product.php )如果找不到,那么就會(huì)加載 single.php 模板如果連 single.php 模板都沒有則加載 index.php 模板。
頁(yè)面
首先被考慮的是自定義模板,也就是編輯頁(yè)面時(shí)所選擇的模板如果沒有自定義模板,則查找 page-{slug}.php 別名模板(如頁(yè)面別名是 about 對(duì)應(yīng)的文件名就是 page-about.php )如果別名模板也沒有就查找 page-{id}.php ID模板(如頁(yè)面ID是 2 對(duì)應(yīng)的文件名就是 page-2.php )如果ID模板也沒有那就是 page.php 模板了如果連 page.php 模板都沒有則加載 index.php 模板
分類頁(yè)
首先被考慮的是 category-{slug}.php 別名模板(如分類別名是 news 對(duì)應(yīng)的文件名就是 category-news.php )如果沒有別名模板則查找 category-{id}.php ID模板(如分類ID是 1 對(duì)應(yīng)的文件名就是 category-1.php )如果ID模板也沒有那就是 category.php 分類模板了如果 category.php 分類模板也沒有則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php 模板
標(biāo)簽頁(yè)
標(biāo)簽頁(yè)模板加載順序和分類頁(yè)一樣,只不過前綴不過 category 而是 tag (如 tag-{slug}.php)。
自定義分類法
有時(shí)候除了WordPress默認(rèn)的分類目錄和標(biāo)簽我們還需要其他的分類方法,這時(shí)候我們就會(huì)注冊(cè)一個(gè)新的分類法,那么在此之前知道分類法的模板加載順序也是十分必要的。以下說明假設(shè)自定義分類法是 people 這個(gè)名字:
分類法分類頁(yè)首先被考慮的是 taxonomy-{taxonomy}-{term}.php 別名模板(如分類別名 teacher 對(duì)應(yīng)的文件名就是 taxonomy-people-teacher.php )如果沒有別名模板,則加載該分類法歸檔頁(yè)(如 taxonomy-people.php )如果分類法歸檔頁(yè)模板也沒有則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php 模板
自定義文章類型
除了自定義分類法,有時(shí)候我們也需要自定義文章類型
自定義文章類型歸檔頁(yè)首先被考慮的是 archive-{post_type}.php 別名模板(如文章類型是 product 那么對(duì)應(yīng)的文件名就是 archive-product.php )如果沒有別名模板則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php 模板
作者歸檔頁(yè)
首先被考慮的是 author-{nicename}.php 別名模板(如作者用戶名是 steven 那么對(duì)應(yīng)的文件名就是 author-steven.php )如果沒有別名模板則加載 author-{id}.php ID模板(如作者ID是 1 對(duì)應(yīng)的文件名就是 author-1.php )如果ID模板沒有則加載 author.php 通用作者模板如果通用作者模板也沒有則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php模板
日期歸檔頁(yè)
首先被考慮的是 date.php 日期歸檔模板如果日期歸檔模板沒有則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php 模板