WordPress 模板層次詳細介紹

    模板加載詳細教程

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

    萬能的index.php

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

    也就是說,當對應的模板不存在時,?index.php?將是WordPress最后的底牌。

    模板加載順序

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

    首頁

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

    文章頁

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

    頁面

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

    分類頁

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

    標簽頁

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

    自定義分類法

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

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

    自定義文章類型

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

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

    作者歸檔頁

    1. 首先被考慮的是?author-{nicename}.php?別名模板(如作者用戶名是?steven?那么對應的文件名就是?author-steven.php?)
    2. 如果沒有別名模板則加載?author-{id}.php?ID模板(如作者ID是?1?對應的文件名就是?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?模板

    搜索結果頁

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

    附件頁

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

    模板層次圖

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

    WordPress 模板層次詳細介紹

    使用鉤子修改模板

    在某些使用場景(如插件),我們并不能直接修改模板文件,這時候我們可以使用鉤子來實現修改模板文件,鉤子名稱是?{$type}_template?這樣的格式,以下是對應的完整的鉤子名稱列表:

    • 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' );

    模板頁面判斷

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

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

    Typecho

    Splinx- 博客圖片Typecho主題

    2020-2-18 7:24:43

    教程

    怎么在管理面板中更改頁腳文本? - WordPress教程

    2020-8-13 15:31:08

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 精品在线一区二区| 国产精品美女一区二区三区 | 久久一区二区三区免费播放| 精品国产一区二区三区无码| 一区二区三区日本电影| 天美传媒一区二区三区| 乱色精品无码一区二区国产盗| 日本免费精品一区二区三区| 无码人妻aⅴ一区二区三区有奶水| 无码国产精品一区二区免费式芒果| 日本一区二区在线不卡| 美日韩一区二区三区| 亚洲AV成人一区二区三区观看 | 无码国产精品一区二区免费I6| 国模少妇一区二区三区| 狠狠做深爱婷婷综合一区 | 一区二区三区在线| 国产视频一区在线播放| 成人H动漫精品一区二区| 午夜一区二区免费视频| 福利国产微拍广场一区视频在线| 国产手机精品一区二区| 精品爆乳一区二区三区无码av| 久久久久人妻精品一区蜜桃| 亚洲不卡av不卡一区二区| 国产AV一区二区三区传媒| 日韩电影一区二区| 无码毛片视频一区二区本码| 无码人妻一区二区三区免费看| 久久国产精品最新一区| 日韩免费无码视频一区二区三区| 骚片AV蜜桃精品一区| 交换国产精品视频一区| 无码人妻精品一区二区三区不卡| 尤物精品视频一区二区三区 | 久久精品黄AA片一区二区三区| 制服丝袜一区在线| 无码喷水一区二区浪潮AV| 亚洲av无码天堂一区二区三区| 久久精品中文字幕一区| 一区二区精品在线|