18 mins read ‧ 2022/07/26 普
WordPress 主題結構解析,以 astra 為例 – ./wp-content/themes/astra
Table of Contents
Astra 是什麼?
前情提要: WordPress 專案目錄結構解析 – ./wp-content/themes
我們上篇提到 themes
的摘要是
直接翻譯:Astra 主題
不一定會有這個檔案,是因為我安裝了 Astra 這個主題,所以才有這個檔案
⚠️ 有”子主題”的時候,有時候也會把原主題稱為”母主題”
但我們今天的重點不會介紹 Astra ,而是介紹頁面結構上
Astra 目錄 / 資料夾 解析
⭐ 是比較常見的
目錄名稱 | 說明 |
📁assets⭐ | Astra 大部分的靜態資源檔案
通常會有 ⚠️ 每個 主題 / 套件 目錄裡面基本上都會有這個目錄 ⚠️ 有些特別大的專案會再各別拆出不同目錄底下的靜態資源檔 |
📁inc | Astra 核心檔案
裡面通常會有 Astra 的核心業務邏輯、函式定義、類定義 ⚠️通常只要叫 |
📁languages | Astra 多國語系檔
裡面通常會有 ⚠️ 不見得每個主題都會有這個資料夾,通常會有 |
📁template-parts | 直接翻譯:部分版型
裡面放的是部分版型,通常會被切成好幾個部分⚠️ 經常與 ⚠️ 不見得每個主題都會有這個資料夾 |
Astra 主題檔案解析
⭐ 是做客製化時,比較常用的,認真說,做客製化,應該是每個檔案都會用到🤣
基本上,主題檔案根目錄底下的 php
檔案,除了 functions.php
之外,全部都是版型檔案
檔案名稱 | 說明 |
404.php | 404版型
你輸入的 |
archive.php⭐ | Archive 彙整頁板型
Archive 中文翻譯叫做彙整,WordPress 中的 Archive 指得像是文章的文章分類彙整頁、文章標籤彙整頁 ( TAG頁 )、日期彙整頁 ( ex: 2022年所有的文章頁 )、作者彙整頁 ( Author 頁,ex: 某某作者發布的所有文章頁 )、等… ⚠️ 您可以創建例如 ⚠️ 在 WordPress 中,針對不同的 |
changelog.txt | Astra 主題的更新紀錄檔
純文字檔案,基本上就是紀錄每個版本的主要變更,可以刪除🗑️ |
comments.php | 留言板版型
如果你的網站有啟用留言功能,這個檔案裏面就是留言板的功能與版型 |
footer.php⭐ | Footer 版型 |
functions.php⭐ | Functions.php 函式檔,主題根目錄底下唯一一支不是版型的 php 檔案
基本上所有的函式定義相關、HOOK使用都會寫在 functions.php 裡面 以 Astra 為例,因為功能太多,全部寫在 functions.php 裡面會難以維護,所以 Astra 將它的核心檔案額外寫在 📁inc 資料夾裡面,歸類管理,並讓 function.php 去引入 📁inc 裡面的檔案 ⚠️ functions.php 是寫一個主題的最小必要文檔之一 ⚠️ 此檔案是主題第一個被載入的檔案,優先於所有版型 |
header.php⭐ | Header 版型 |
index.php | 入口文件 / 預設版型
當你的主題裡面什麼版型都沒有的時候 ( 沒有 page.php, single.php, archive.php )時,預設會套用這個版型 ⚠️ 如果你的網站將首頁指定為 “最新文章” , 而不是 “指定頁面” 時,就是吃這個版型 |
page.php⭐ | 所有頁面的版型
你可能會覺得說,不對阿,我每個頁面都長不一樣阿,怎麼會是同一個版型!? 因為大部分的主題都有使用頁面編輯器,例如 Astra 就支援 Elementor, Beaver Builder, Brizy, 區塊編輯器等…其他還有 Divi, Flatsome 等…原理都一樣,這些頁面編輯器會將內容都存在資料庫裏面,並不是寫死在版型上的,所以你才可以做出每頁都不同樣子 ⚠️ 您可以試試看,在 ⚠️ 可以透過 ⚠️ 例如你有一頁,關於我們的頁面,文章 |
readme.txt | 讀我檔案
純文字檔案,基本上就是 Astra 的使用須知,可以刪除🗑️ |
screenshot.jpg | Astra 主題的縮圖
一個圖檔,就是你在後台選擇主題時看到的 Astra 縮圖,可以刪除🗑️ |
search.php | 搜尋結果版型
當你在網站上搜尋時,跑出結果的畫面就是這個版型 |
searchform.php | 搜尋表單版型
當你在網站上搜尋時,跳出一個搜尋框給你打字的,就是這個版型 |
sidebar.php | 側欄版型 |
single.php⭐ | Single 文章頁版型
⚠️ 可以透過 ⚠️ 在 WordPress 中,針對不同的 |
style.css | Astra 主題的 CSS 樣式檔案
這邊寫的 CSS 預設會在 functions.php 中被引入 ( 你也可以修改 functions.php 來取消引入 ) ⚠️ style.css 是寫一個主題的最小必要文檔之一 ⚠️ 未必所有主要的 CSS 都會寫在這裡,也有可能會寫在 ⚠️ ⚠️ ⚠️ 此文檔上方有一堆 CSS 註釋,不可刪⚠️ ⚠️ ⚠️ ,不要以為那是一般的註釋,WordPress 會抓取裡面的註釋做為參數來判斷主題版本、text-domain、母主題等資訊 |
theme.json | Astra 主題資料設定檔
⚠️ Astra 特有檔案,其他主題不會有此檔 |
toolset-config.json | Astra 主題工具設定檔
⚠️ Astra 特有檔案,其他主題不會有此檔 |
wpml-config.xml | Astra 主題整合 WPML 的 XML 檔
⚠️ Astra 特有檔案,其他主題不會有此檔 |
版型覆寫機制
上面在講版型時,講到了很多規則
例如
⚠️ 可以透過
page-{post_type}.php
的方式,將版型套用到指定的文章類型上
這個就是 WordPress 覆寫機制 ( Override ) 的應用
這個的來源是來自 WordPress 官方文件中的 Template Hierarchy ( 版型的覆寫等級高低順序 )
大家可以先參考這張圖,之後有空再來中文化詳細介紹😀
WordPress 絕大部分所有的主題結構,包含我使用的 Picostrap 也都是同樣的原則與概念
看到這篇,就已經踏入 WordPress 客製化開發的核心概念之一,另一個是 HOOK 的使用
覺得不錯的話,請給我點個推薦
您的支持與鼓勵是我們前進的最大動力!