WordPress 模板層級完全解析:查找鏈邏輯與 FSE 獨立版型設定

很多人在調整版型時,改了樣式卻發現分類頁還是長一樣,或者想讓某一篇文章用不同的頁面配置,卻不知道從哪下手。這背後牽涉到 WordPress 模板層級的運作邏輯——也就是系統在決定「用哪個模板渲染這個頁面」時,依循的那套選取規則。

理解這套邏輯,你才能知道為什麼某個模板會被套用,也才能知道「要讓分類頁有獨立版型,該建立哪個檔案、在 FSE 裡建立哪個模板」。不理解它,改模板就只能靠猜。

WordPress 怎麼決定要用哪個模板

每次有人造訪一個頁面,WordPress 的模板引擎都會跑一套選取流程:從最具體的模板開始往下找,找到第一個存在的就用它。

以分類頁為例,系統的查找順序是這樣:先找針對這個分類 ID 客製化的模板(如 category-{slug}.php),沒有就找針對分類的通用模板(category.php),再沒有就向上找 archive.php,最後才是 index.php。這個「從最具體到最通用」的遞退邏輯,就是該系統的核心。

不同頁面類型各有自己的查找鏈。單篇文章(single.php)、自訂文章類型(single-{post_type}.php)、靜態頁面(page.php)、首頁(front-page.php)、404 頁面(404.php)、搜尋結果(search.php)都有各自的起始點,但最終的備用保底都指向 index.php

各頁面類型的模板查找鏈

以下整理常見頁面類型的查找順序,愈上面的優先度愈高。

頁面類型 查找順序(由高到低)
分類頁 category-{slug}.phpcategory-{id}.phpcategory.phparchive.phpindex.php
標籤頁 tag-{slug}.phptag-{id}.phptag.phparchive.phpindex.php
自訂分類法 taxonomy-{taxonomy}-{term}.phptaxonomy-{taxonomy}.phptaxonomy.phparchive.phpindex.php
單篇文章 single-post-{id}.phpsingle-{slug}.phpsingle-post.phpsingle.phpsingular.phpindex.php
自訂文章類型 single-{post_type}-{slug}.phpsingle-{post_type}.phpsingle.phpsingular.phpindex.php
靜態頁面 頁面指定範本 → page-{slug}.phppage-{id}.phppage.phpsingular.phpindex.php
首頁(靜態) front-page.phphome.phppage.phpindex.php
搜尋結果 search.phpindex.php
404 404.phpindex.php

這份查找鏈是傳統 PHP 主題的邏輯。切換到全站編輯器(FSE)後,對應的模板概念依然存在,只是改用 HTML 區塊模板檔案,儲存在主題的 templates/ 資料夾下,命名規則沿用同一套。

在全站編輯器裡建立獨立版型

使用支援 FSE 的區塊主題時,你可以直接在後台的「外觀 → 編輯器」裡新增模板,不需要手動建立 PHP 檔案。

進入編輯器後,左側面板的「模板」區塊會列出目前主題已有的模板。點選右上角的「新增模板」,系統會提示你選擇模板類型,包含分類頁、標籤頁、作者頁、單篇文章、靜態頁面等選項。建立後,這個模板就會套用到對應的頁面類型,優先度高於主題預設模板。

如果你要對「特定分類」設定獨立版型,步驟稍有不同。

替特定分類建立獨立模板

在新增模板的步驟裡,選擇「分類」後,系統會讓你選要針對哪個分類建立,而不是套用到全部分類。建立後,這個模板只會在訪客瀏覽該分類的彙整頁時被啟用,其他分類仍沿用預設的分類模板。

這個做法等同於在傳統主題裡建立 category-{slug}.php,FSE 只是把操作介面從程式碼移到視覺化編輯器。

替單篇文章指定獨立模板

靜態頁面在傳統主題裡可以透過「頁面屬性」指定模板,單篇文章則通常需要靠外掛或手動建立 single-{slug}.php 才能做到。FSE 主題下,你可以在編輯器裡建立一個針對「單篇文章」的模板,然後在文章編輯畫面的側邊欄,找到「模板」設定區塊,指定這篇文章要使用哪個模板——層級與 single-post-{id}.php 相當,優先度高於通用的 single.php

模板零件的角色

FSE 還引入了「模板零件(Template Parts)」的概念,用來切割頁眉、頁腳、側邊欄等可重複使用的區塊。模板零件本身不直接對應到頁面類型,而是被各模板呼叫引用。當你想讓不同版型共享同一個頁腳設計,就透過引用同一個零件來達成,而不是在每個模板裡各自複製一份。

傳統主題與 FSE 主題的差異對照

兩種主題架構在模板概念上是一致的,差別主要在儲存方式與編輯介面。

面向 傳統 PHP 主題 FSE 區塊主題
模板格式 .php 檔案 .html 區塊模板檔案
存放位置 主題根目錄 templates/ 子資料夾
新增方式 手動建立 PHP 檔案 後台編輯器 UI 或手動建立 HTML 模板
模板零件 get_template_part() 呼叫 Template Parts 區塊引用
樣式設定 style.css、PHP 輸出 theme.json、區塊屬性
查找規則 同一套模板邏輯 同一套模板邏輯

可以看到,該系統本身並沒有因為 FSE 而改變,改變的只是你用什麼方式來建立和管理這些模板。理解查找鏈的遞退邏輯,在兩種主題架構下都是一樣重要的基礎。

當你想控制某個頁面的版型時,真正要問的問題不是「哪裡可以改」,而是「這個頁面對應的模板查找鏈從哪裡開始」。從最具體的那一層建立模板,就能在不影響其他頁面的前提下,精準控制該頁面的呈現方式。

相關文章
標籤: WordPress, 全站編輯器, FSE, template hierarchy, 模板層級