WordPress 5.8引入了一個主題選擇系統,用於配置區塊設定、樣式、模板等。這是通過一個新theme.json
檔案完成的,作者可以將其放在他們主題資料夾的根目錄下。FSE Outreach Program的負責人Anne McCarthy在今天早些時候宣佈了一項調查,以獲取開發人員對此功能的反饋。
“由於這種新機制是面向WordPress未來的綜合樣式系統邁出的早期一步,因此重要的是要聽取目前正在使用的每個人的意見,theme.json
以瞭解更多有關人們如何使用該工具以及將哪些內容包含在Core中可能有意義的資訊向前,”她在公告中寫道。
該調查對所有使用過的主題作者開放theme.json
,讓他們有機會提供一些早期反饋並幫助引導船向前發展。
因為我在過去幾個月中廣泛使用該系統,所以我有一些話要說。另外,我只是喜歡參加與WordPress相關的調查。我還認為這是一個機會,可以從發展的角度分享我對theme.json
.
以下是我對調查問題的回答——好吧,整理過的版本。
注意: 這是一篇以開發人員為中心的文章,可能不會普遍吸引我們所有的讀者。我試圖用使用者友好的術語來解釋一些事情,但可能需要一些主題開發的先決知識。
經驗
調查的第一個問題非常簡單。它詢問您在構建區塊主題或使用theme.json
. 它提供了四個選項(和一個“其他”選項):
- 我已經構建並啟動了區塊主題。
- 我已經嘗試過構建區塊主題。
- 我已經探索了使用
theme.json
經典主題。 - 我使用了一個區塊主題,但我還沒有構建一個。
我選擇第一個選項是因為我已經為家人和朋友構建了兩個區塊主題。這些是我已經免費維護的簡單個人網站——老實說,我需要開始收費。我也在研究一個我希望公開發布的主題。
它是如何開始的以及它是如何進行的
第二個問題詢問如何開始使用區塊主題和theme.json
. 選擇是分叉現有主題、使用Empty Theme或從頭開始。
同樣,這是我在每個方向上都進行過實驗的事情之一,但我不記得確切的起點。我的大部分工作都來自於對我上一次在2019年工作的主題進行分叉。
我計劃在某個時候將其作為新主題免費釋出。我主要在等待以下內容:
- 導航區塊開發落戶
- 將Post Author區塊拆分為更小的區塊
- 一組健壯的評論相關區塊
- 釋出特色圖片區塊以提供尺寸選項
如果這些專案得到解決,我想我今天可以實際釋出我的主題的使用自擔風險測試版。
模板和模板部件
該調查詢問主題者總是在基於區塊的主題中包含哪些模板和模板部件。有一個自由格式的評論欄——踏上肥皂盒……
我現在對區塊模板有愛/恨的關係。HTML模板的靜態特性讓我想起了主題開發不那麼複雜的簡單時代。然而,這在動態系統中也存在問題。
我不記得上次我使用多個頂級模板構建基於PHP的傳統主題是什麼時候:index.php
. 動態部分一直是事物的核心,它們是模板部分。使用 PHP,很容易設定一些變數或使用函式呼叫來上下文載入訪問者當前在站點上檢視的任何頁面所需的模板部分。
區塊模板系統不是這樣工作的。它本質上迫使開發人員打破不要重複自己 (DRY) 原則。
例如,如果設計師想要為頁面和文章顯示不同的標題模板部分,他們只需要在傳統主題中建立一個header-page.php
或header-post.php
模板。但是,由於區塊模板系統不同,他們現在必須建立兩個頂級模板single.html
(post) 和page.html
來完成相同的事情。
這是一件“壞事”,因為主題作者必須在每個頂級模板中複製所有其他程式碼。無法根據上下文載入不同的模板部件。
回答這個問題:出於需要,我使用了幾乎所有可能的頂級模板。
我還回答了問題的第二部分並列出了我最常用的模板部分(按層次結構細分):
- 標題
- 內容– 迴圈– 側邊欄
- 頁尾
在content-*.html
和loop-*.html
模板部分是那些擁有最多的變化。
定義顏色
調查的下一部分詢問主題作者如何在theme.json
. 信不信由你,命名顏色可能是多年來主題世界中最具爭議的話題。唯一公認的兩件事是“背景”和“前景”顏色。
Morten Rand-Hendriksen在2018年為標準化主題顏色命名方案建立了一個討論工單。這不是第一次討論,也不是最後一次。它旨在解決的問題是系統中顏色的slug,這就是主題如何定義它們的調色盤。一旦使用者使用預設顏色,slug就會被硬編碼到他們的內容中。切換到具有不同slug的另一個主題,舊顏色會消失,並且不會自動更改為新主題的顏色。
我使用的語義名稱與Tailwind CSS框架的著色系統非常相似。例如red-medium
,我會使用primary-500
(語義)而不是(描述性)。語義方法將允許主題作者定義一組顏色,每次使用者切換主題時都會更新這些顏色。
當然,還有其他的學派,甚至每個喜歡語義命名的人也不會在同一個系統上達成一致。我在最近的 GitHub 票證中更詳細地描述了我的方法,併為可能想嘗試的其他人提供了theme.json
Gist。
其他主題JSON設定
除了顏色和排版之外,該調查還詢問了作者使用的其他設定主題。這是我通常使用所有內容的另一種情況——如果有一個選項,我會定義它。
WordPress當前沒有預設的一個用例是全域性間距。大多數主題作者對大多數垂直邊距(區塊和元素之間的空白)使用單個值。它也經常用於預設的垂直和水平填充。
我不確定是否需要預設,因為我不知道 WordPress 將如何使用它。這是其他人所要求的,並且幾乎無處不在。圍繞它定義一個完整的系統可能會讓人頭疼,但我仍然希望看到一些關於至少實現標準全域性間距預設的討論。
每區塊設定和樣式
這個調查部分是一個是/否問題,只是詢問主題作者是否在他們的theme.json
檔案中包含每個區塊的設定或樣式。當然,我稍後在可選評論部分留下了一些額外的評論。
在設定方面,我對系統感到滿意,它允許使用者定義全域性或基於每個區塊啟用哪些功能。但是,我並不熱衷於通過theme.json
.
用JSON編寫CSS,本質上我們正在談論的內容,在很多層面上都感覺不對。目前,它僅限於幾種可配置的樣式,因此無論如何都需要深入研究實際的CSS檔案。這是有問題的,因為主題的一半CSS程式碼被劃分為theme.json
一個單獨的CSS檔案。從開發的角度來看,它使程式碼庫更難維護。
最初,我從theme.json
. 但是,我已將樣式移回CSS檔案。感覺更自然,而且我擁有我習慣的所有工具的額外好處。現在,我無法想象我會搬回去的場景。
除了節省幾個位元組的程式碼之外,我還沒有看到通過JSON為大多數事物新增樣式有什麼好處。也許這會在未來改變,我會成為一個皈依者。現在,我主要堅持使用CSS。
其他反饋:PHP層
我以前說過,但它值得重複。對於這個theme.json
配置系統,我們需要一個PHP層。目前有一個解決這個問題的公開討論工單。
這種系統有兩個主要好處。對於傳統的主題開發人員來說,擁有用於拼湊配置的PHP API會更自然。我把它看作是一個橄欖枝,核心/古騰堡開發人員認識到許多主題作者將通過熟悉的程式語言更容易地進入FSE功能,這是一種誠意的表現。
第二個優勢是,如果有一種簡單的方法可以連線到主題JSON系統並覆蓋內容,那麼有無數的外掛想法可以擴充套件全域性樣式、站點編輯等。一個簡單的過濾器鉤子可以讓這一切變得輕鬆。
評論留言