WordPress 模板層次詳細介紹

    模板加載詳細教程

    WordPress模板的定義非常方便,但是在定制模板之前,我們有必要知道WordPress的模板層次,了解WordPress是如何加載模板文件的,這將有利于開發(fā)模板時合理利用資源及提高工作效率。

    萬能的index.php

    我們知道一個最簡單的WordPress主題只需要?style.css?和?index.php?文件即可。這代表著?index.php?可以是任何一個頁面的模板,無論是首頁,還是文章頁,或是分類頁,再或者是搜索結(jié)果頁面,它都能完美勝任。

    也就是說,當(dāng)對應(yīng)的模板不存在時,?index.php?將是WordPress最后的底牌。

    模板加載順序

    下面讓我們來了解一下WordPress都是怎么加載模板的

    首頁

    1. 首先WordPress會先檢查是否有靜態(tài)首頁,如果有靜態(tài)首頁,就會加載這個頁面內(nèi)容并通過?front-page.php?模板文件展示,如果沒有這個模板文件,就會通過頁面模板展示
    2. 如果沒有靜態(tài)首頁,就會加載?home.php??最新文章模板
    3. 如果沒有?home.php?則加載?index.php?模板

    文章頁

    1. 首先被考慮的是?single-{post_type}.php?這樣一個模板文件(如文章類型是?product?那么對應(yīng)的文件名就是?single-product.php?)
    2. 如果找不到,那么就會加載?single.php?模板
    3. 如果連?single.php?模板都沒有則加載?index.php?模板。

    頁面

    1. 首先被考慮的是自定義模板,也就是編輯頁面時所選擇的模板
    2. 如果沒有自定義模板,則查找?page-{slug}.php?別名模板(如頁面別名是?about?對應(yīng)的文件名就是?page-about.php?)
    3. 如果別名模板也沒有就查找?page-{id}.php?ID模板(如頁面ID是?2?對應(yīng)的文件名就是?page-2.php?)
    4. 如果ID模板也沒有那就是?page.php?模板了
    5. 如果連?page.php?模板都沒有則加載?index.php?模板

    分類頁

    1. 首先被考慮的是?category-{slug}.php?別名模板(如分類別名是?news?對應(yīng)的文件名就是?category-news.php?)
    2. 如果沒有別名模板則查找?category-{id}.php?ID模板(如分類ID是?1?對應(yīng)的文件名就是?category-1.php?)
    3. 如果ID模板也沒有那就是?category.php?分類模板了
    4. 如果?category.php?分類模板也沒有則加載?archive.php?通用歸檔模板
    5. 如果連?archive.php?通用歸檔模板都沒有則加載?index.php?模板

    標(biāo)簽頁

    標(biāo)簽頁模板加載順序和分類頁一樣,只不過前綴不過?category?而是?tag?(如?tag-{slug}.php)。

    自定義分類法

    有時候除了WordPress默認的分類目錄和標(biāo)簽我們還需要其他的分類方法,這時候我們就會注冊一個新的分類法,那么在此之前知道分類法的模板加載順序也是十分必要的。以下說明假設(shè)自定義分類法是?people?這個名字:

    1. 分類法分類頁首先被考慮的是?taxonomy-{taxonomy}-{term}.php?別名模板(如分類別名?teacher?對應(yīng)的文件名就是?taxonomy-people-teacher.php?)
    2. 如果沒有別名模板,則加載該分類法歸檔頁(如?taxonomy-people.php?)
    3. 如果分類法歸檔頁模板也沒有則加載?archive.php?通用歸檔模板
    4. 如果連?archive.php?通用歸檔模板都沒有則加載?index.php?模板

    自定義文章類型

    除了自定義分類法,有時候我們也需要自定義文章類型:

    1. 自定義文章類型歸檔頁首先被考慮的是?archive-{post_type}.php?別名模板(如文章類型是?product?那么對應(yīng)的文件名就是?archive-product.php?)
    2. 如果沒有別名模板則加載?archive.php?通用歸檔模板
    3. 如果連?archive.php?通用歸檔模板都沒有則加載?index.php?模板

    作者歸檔頁

    1. 首先被考慮的是?author-{nicename}.php?別名模板(如作者用戶名是?steven?那么對應(yīng)的文件名就是?author-steven.php?)
    2. 如果沒有別名模板則加載?author-{id}.php?ID模板(如作者ID是?1?對應(yīng)的文件名就是?author-1.php?)
    3. 如果ID模板沒有則加載?author.php?通用作者模板
    4. 如果通用作者模板也沒有則加載?archive.php?通用歸檔模板
    5. 如果連?archive.php?通用歸檔模板都沒有則加載?index.php?模板

    日期歸檔頁

    1. 首先被考慮的是?date.php?日期歸檔模板
    2. 如果日期歸檔模板沒有則加載?archive.php?通用歸檔模板
    3. 如果連?archive.php?通用歸檔模板都沒有則加載?index.php?模板

    搜索結(jié)果頁

    1. 首先被考慮的是?search.php?搜索結(jié)果模板
    2. 如果沒有搜索結(jié)果模板則加載?index.php?模板

    附件頁

    1. 首先會按MIME類型加載模板(如?image.php,?video.php,?application.php,而?text/plain?類型則按順序嘗試加載?text.php,?plain.php,?text_plain.php?這三個文件。
    2. 如果沒有對應(yīng)的MIME類型模板則?attachment.php?附件模板(如沒有?attachment.php?則加載?single-attachment.php?)
    3. 如果沒有附件模板則加載?single.php?文章頁模板
    4. 如果連?single.php?文章頁模板都沒有則加載?index.php?模板

    模板層次圖

    上面用文字詳細講述了WordPress模板的加載順序,盡管詳細,但還不如一張信息圖更為直觀,以下就是WordPress的模板層次結(jié)構(gòu)圖。

    WordPress 模板層次詳細介紹

    使用鉤子修改模板

    在某些使用場景(如插件),我們并不能直接修改模板文件,這時候我們可以使用鉤子來實現(xiàn)修改模板文件,鉤子名稱是?{$type}_template?這樣的格式,以下是對應(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

    以下是一個使用例子(讓頁面加載?single.php?文章頁的模板):

    function page_template_filter( $templates='' ){
    $templates=locate_template("single.php",false);
    return $templates;
    }
    add_filter( 'page_template', 'page_template_filter' );

    模板頁面判斷

    一般情況下,在一個特定的模板中我們能清楚知道應(yīng)該怎么輸出特定的樣式和內(nèi)容,但在一些通用模板中(如?header.php?)我們想要知道用戶當(dāng)前訪問的是哪個頁面模板就需要借助WordPress內(nèi)置的條件判斷函數(shù)了,這些函數(shù)可以幫助我們判斷當(dāng)前是什么頁面以方便加載不同的模板內(nèi)容,如?is_home()?則是判斷首頁的條件標(biāo)簽,is_single()?則是判斷文章頁的條件標(biāo)簽,等等。

    原文鏈接:http://www.dmeng.net/wordpress-template-hierarchy.html

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯(lián)網(wǎng),僅供網(wǎng)友學(xué)習(xí)交流,若您喜歡本文可附上原文鏈接隨意轉(zhuǎn)載。
    無意侵害您的權(quán)益,請發(fā)送郵件至 1355471563#qq.com 或點擊右側(cè) 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優(yōu)惠劵
    搜索
    主站蜘蛛池模板: 乱码精品一区二区三区| 日本激情一区二区三区| 无码国产精品一区二区免费16| 一区二区三区在线观看中文字幕 | 亚洲丰满熟女一区二区v| 亚洲日韩精品无码一区二区三区 | 成人无码一区二区三区| 国产一区二区三区免费视频| 国产乱码精品一区三上 | 精品亚洲AV无码一区二区| 三上悠亚日韩精品一区在线| 香蕉视频一区二区三区| 国产凸凹视频一区二区| 日本一区二区三区免费高清 | 无码人妻视频一区二区三区| 天天爽夜夜爽人人爽一区二区| 亚洲大尺度无码无码专线一区| 国内精品视频一区二区三区八戒| 国模精品视频一区二区三区| 精品人妻AV一区二区三区| 国产精品美女一区二区视频 | 亚洲A∨精品一区二区三区| 精品视频一区二区三区免费| 精品久久久久一区二区三区| 亚洲制服丝袜一区二区三区 | 亚洲中文字幕一区精品自拍| 文中字幕一区二区三区视频播放 | 日韩精品乱码AV一区二区| 免费av一区二区三区| 久久精品国产一区二区三区肥胖| 精品国产a∨无码一区二区三区| 国产精品毛片VA一区二区三区| 国产精品毛片VA一区二区三区| 一区二区三区午夜视频| 亚洲一区二区久久| 综合无码一区二区三区四区五区| 人妻无码一区二区三区| 国产激情精品一区二区三区| 国精产品一区一区三区免费视频 | 中文字幕在线观看一区| 精品福利一区二区三|