WordPress的模板層次
WordPress模板的定義非常方便,但是在定制模板之前,我們有必要知道WordPress的模板層次,了解WordPress是如何加載模板文件的,這將有利于開發(fā)模板時(shí)合理利用資源及提高工作效率。
萬能的index.php
通過“WordPress主題構(gòu)成”這篇文章,我們已知道一個(gè)最簡(jiǎn)單的WordPress主題只需要 style.css 和 index.php 文件即可。這代表著 index.php 可以是任何一個(gè)頁面的模板,無論是首頁,還是文章頁,或是分類頁,再或者是搜索結(jié)果頁面,它都能完美勝任。
也就是說,當(dāng)對(duì)應(yīng)的模板不存在時(shí), index.php 將是WordPress最后的底牌。
模板加載順序
下面讓我們來了解一下WordPress都是怎么加載模板的
首頁
首先WordPress會(huì)先檢查是否有靜態(tài)首頁,如果有靜態(tài)首頁,就會(huì)加載這個(gè)頁面內(nèi)容并通過 front-page.php 模板文件展示,如果沒有這個(gè)模板文件,就會(huì)通過頁面模板展示如果沒有靜態(tài)首頁,就會(huì)加載 home.php 最新文章模板 如果沒有 home.php 則加載 index.php模板
文章頁
首先被考慮的是 single-{post_type}.php 這樣一個(gè)模板文件(如文章類型是 product 那么對(duì)應(yīng)的文件名就是 single-product.php )如果找不到,那么就會(huì)加載 single.php 模板如果連 single.php 模板都沒有則加載 index.php 模板。
頁面
首先被考慮的是自定義模板,也就是編輯頁面時(shí)所選擇的模板如果沒有自定義模板,則查找 page-{slug}.php 別名模板(如頁面別名是 about 對(duì)應(yīng)的文件名就是 page-about.php )如果別名模板也沒有就查找 page-{id}.php ID模板(如頁面ID是 2 對(duì)應(yīng)的文件名就是 page-2.php )如果ID模板也沒有那就是 page.php 模板了如果連 page.php 模板都沒有則加載 index.php 模板
分類頁
首先被考慮的是 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)簽頁
標(biāo)簽頁模板加載順序和分類頁一樣,只不過前綴不過 category 而是 tag (如 tag-{slug}.php)。
自定義分類法
有時(shí)候除了WordPress默認(rèn)的分類目錄和標(biāo)簽我們還需要其他的分類方法,這時(shí)候我們就會(huì)注冊(cè)一個(gè)新的分類法,那么在此之前知道分類法的模板加載順序也是十分必要的。以下說明假設(shè)自定義分類法是 people 這個(gè)名字:
分類法分類頁首先被考慮的是 taxonomy-{taxonomy}-{term}.php 別名模板(如分類別名 teacher 對(duì)應(yīng)的文件名就是 taxonomy-people-teacher.php )如果沒有別名模板,則加載該分類法歸檔頁(如 taxonomy-people.php )如果分類法歸檔頁模板也沒有則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php 模板
自定義文章類型
除了自定義分類法,有時(shí)候我們也需要自定義文章類型
自定義文章類型歸檔頁首先被考慮的是 archive-{post_type}.php 別名模板(如文章類型是 product 那么對(duì)應(yīng)的文件名就是 archive-product.php )如果沒有別名模板則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php 模板
作者歸檔頁
首先被考慮的是 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模板
日期歸檔頁
首先被考慮的是 date.php 日期歸檔模板如果日期歸檔模板沒有則加載 archive.php 通用歸檔模板如果連 archive.php 通用歸檔模板都沒有則加載 index.php 模板
搜索結(jié)果頁
首先被考慮的是 search.php 搜索結(jié)果模板如果沒有搜索結(jié)果模板則加載 index.php模板
附件頁
首先會(huì)按MIME類型加載模板(如 image.php, video.php, application.php,而 text/plain 類型則按順序嘗試加載 text.php, plain.php, text_plain.php 這三個(gè)文件。如果沒有對(duì)應(yīng)的MIME類型模板則 attachment.php 附件模板(如沒有 attachment.php 則加載 single-attachment.php )如果沒有附件模板則加載 single.php 文章頁模板如果連 single.php 文章頁模板都沒有則加載 index.php 模板
模板層次圖
上面用文字詳細(xì)講述了WordPress模板的加載順序,盡管詳細(xì),但還不如一張信息圖更為直觀,以下就是WordPress的模板層次(2)結(jié)構(gòu)圖。
使用鉤子修改模板
在某些使用場(chǎng)景(如插件),我們并不能直接修改模板文件,這時(shí)候我們可以使用鉤子來實(shí)現(xiàn)修改模板文件,鉤子名稱是 {$type}_template 這樣的格式,以下是對(duì)應(yīng)的完整的鉤子名稱列表:
index_template
404_template
archive_template
author_template
category_template
tag_template
taxonomy_template
date_template
home_template
front_page_template
page_template
paged_template
search_template
single_template
text_template, plain_template, text_plain_template (all mime types)
attachment_template
comments_popup
以下是一個(gè)使用例子(讓頁面加載 single.php 文章頁的模板):
function page_template_filter( $templates=''){
$templates=locate_template("single.php",false);
return $templates;
}
add_filter('page_template','page_template_filter');
模板頁面判斷
一般情況下,在一個(gè)特定的模板中我們能清楚知道應(yīng)該怎么輸出特定的樣式和內(nèi)容,但在一些通用模板中(如 header.php )我們想要知道用戶當(dāng)前訪問的是哪個(gè)頁面模板就需要借助WordPress內(nèi)置的條件判斷函數(shù)了,這些函數(shù)可以幫助我們判斷當(dāng)前是什么頁面以方便加載不同的模板內(nèi)容,如 is_home() 則是判斷首頁的條件標(biāo)簽,is_single() 則是判斷文章頁的條件標(biāo)簽,等等。
欄 目:WordPress
下一篇:wordpress實(shí)現(xiàn)獲取父類分類名稱的方法
本文標(biāo)題:WordPress的模板層次
本文地址:http://mengdiqiu.com.cn/a1/WordPress/12656.html
您可能感興趣的文章
- 05-31wordpress修改后臺(tái)登錄地址教程
- 05-31WordPress自定義用戶頭像實(shí)現(xiàn)代碼
- 01-11修改wordpress上傳臨時(shí)目錄解決wordpress無法安裝插件包的方法
- 01-11WordPress增加文章排序方式
- 01-11自己做wordpress評(píng)論插件修改評(píng)論樣式(兩步美化評(píng)論內(nèi)容)
- 01-11wordpress get
- 01-11wordpress獲取文章評(píng)論數(shù)過濾掉作者代碼分享
- 01-11在wordpress文章末尾添加內(nèi)容的簡(jiǎn)單方法
- 01-11不用wordpress插件顯示文章瀏覽統(tǒng)計(jì)功能代碼修改(原理分析)
- 01-11wordpress dynamic


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 05-31wordpress修改后臺(tái)登錄地址教程
- 05-31WordPress自定義用戶頭像實(shí)現(xiàn)代碼
- 01-11WordPress增加文章排序方式
- 01-11修改wordpress上傳臨時(shí)目錄解決wordpre
- 01-11wordpress get
- 01-11自己做wordpress評(píng)論插件修改評(píng)論樣式
- 01-11在wordpress文章末尾添加內(nèi)容的簡(jiǎn)單方
- 01-11wordpress獲取文章評(píng)論數(shù)過濾掉作者代
- 01-11wordpress dynamic
- 01-11不用wordpress插件顯示文章瀏覽統(tǒng)計(jì)功
隨機(jī)閱讀
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11ajax實(shí)現(xiàn)頁面的局部加載