開始製作 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 等函式包含檔案。