開始製作 WordPress 主題之前,首先得了解 WordPress 主題到底由哪些文件構成,你得清楚 WordPress 程序是怎樣與主題文件連接的。一般來講一個主題至少需要包含兩個文件:index.php 和 style.css 。
細的來説,可能存在的文件有:
主頁:
- home.php
- index.php(這個算是萬能的了)
文章頁:
- single-{post_type}.php – 如果文章類型是 videos(即視頻),WordPress 就會去查找 single-videos.php(WordPress 3.0 及以上版本支持)
- single.php
- index.php
頁面:
- xxx.php(文件名隨便),自定義頁面模板 – 在 WordPress 後台創建頁面的時候,右側邊欄可以選擇頁面的自定義模板
- page-{slug}.php – 如果頁面的縮略名是 news,WordPress 將會查找 page-news.php(WordPress 2.9 及以上版本支持)
- page-{id}.php – 如果頁面 ID 是 6,WordPress 將會查找 page-6.php
- page.php
- index.php
分類模板:
- category-{slug}.php – 如果分類的縮略名為 news,WordPress 將會查找 category-news.php(WordPress 2.9 及以上版本支持)
- archive-{post_type}.php--如果你的主題有自定義文章類型,比如按照官方網站教程,註冊了一個名為 book 的文章類型,那麼它的歸檔頁面模板就是 category-book.php,如果沒有這個文件,它是不會使用其它文件來代替的,將會直奔 404
- taxonomy-{taxonomy_slug}.php-這是自定義分類法的分類頁,比如上面你註冊了一個 book 的文章類型,然後你註冊一個分類法 author, 它的別名是 authors,以便讓文章按作者分類。那麼這個作者分類頁的模板文件就是 taxonomy-authors.php
- category-{id}.php -如果分類 ID 為 6,WordPress 將會查找 category-6.php
- category.php
- archive.php
- index.php
標籤
- tag-{slug}.php – 如果標籤縮略名為 sometag,WordPress 將會查找 tag-sometag.php
- tag-{id}.php – 如果標籤 ID 為 6,WordPress 將會查找 tag-6.php(WordPress 2.9 及以上版本支持)
- tag.php
- archive.php
- index.php
作者:
- author-{nicename}.php – 如果作者的暱稱為 rami,WordPress 將會查找 author-rami.php(WordPress 3.0 及以上版本支持)
- author-{id}.php – 如果作者 ID 為 6,WordPress 將會查找 author-6.php(WordPress 3.0 及以上版本支持)
- author.php
- archive.php
- index.php
日期頁面:
- date.php
- archive.php
- index.php
搜索結果:
- search.php
- index.php
404 (未找到) 頁面
- 404.php
- index.php
附件頁面:
- MIME_type.php – 可以是任何 MIME 類型 (image.php, video.php, audio.php, application.php 或者其他).
- attachment.php
- single.php
- index.php
函數
- functions.php
評論模板
- comments.php
關於上面的文件層次結構
上面除了自定義文章類型,和自定義分類法需要固定的模板來顯示對應內容,其它的,如果缺少對應文件,可以用其它文件代替。以主頁為例,下面有 2 個文件 home.php 和 index.php,WordPress 程序會從你的主題文件夾中依次查找這兩個文件,如果找到 home.php,則使用 home.php 作為博客首頁模板,即使你的主題文件夾中有 index.php;如果 home.php 未找到,則使用 index.php 作為首頁模板;如果 home.php 和 index.php 都找不到,你的主題將不會被 WordPress 識別,等於廢物。
對於上面這麼多文件,不一定全部備齊,需要什麼模板採用到,對於複雜一點的主題,通常會有很多 php 函數,為了有清晰的層次結構,作者一般會將代碼分裝在其它的 php 文件中,可以在 functions.php 使用 include_once 等函數包含文件。