WordPress 7.0 開發者指南:核心變更全面解析

Chair

版本釋出 — 本文介紹 7.0 版本的主要變更與開發者注意事項。

WordPress 7.0 是一次里程碑式的大版本更新:首次將 AI 能力系統性地引入核心架構,並完成了管理後臺的全面現代化改造。本次釋出共包含 419 個 Core Trac 工單,其中 76 個為增強和新功能請求超過 300 個 bug 修復40 餘個工單聚焦於編輯器90 餘個聚焦於 wp-admin。來自 Gutenberg 外掛的 411 個增強486 個 bug 修復 也被合併入 Core,覆蓋編輯器、儀表盤和 AI 整合各個層面。

本文面向開發者,按五大主題梳理 7.0 中最重要的技術變更與不相容變更(breaking changes):AI 基礎設施、管理後臺現代化、創意定製工具、設計工具增強和開發者工具箱,最後補充無障礙改進與其他亮點。本指南釋出於 7.0 的 Release Candidate(RC)階段,旨在幫助開發者提前瞭解變更並做好適配準備。

一、AI 基礎設施:WordPress 進入智慧時代

WordPress 7.0 首次內建 AI 能力,採用與供應商無關(provider-agnostic)的架構設計,讓站點所有者可以自由選擇和切換 AI 服務商。這一基礎設施的鋪設只是起點——未來還將引入自主代理(agentic collaborator)等更高階的功能。

WP AI 客戶端(WP AI Client)

WP AI 客戶端為 WordPress 提供了一箇中央介面,允許外掛與生成式 AI 模型通訊,無需關心底層供應商。請求路由由 WordPress Core 統一處理。API 金鑰透過 Connectors API 集中管理,在 設定 > 聯結器(Settings > Connectors)頁面中配置。系統預置若干模型,使用者也可以新增自己偏好的模型。

Abilities API 直接整合在 WP AI 客戶端內,支援將多種 AI 能力串聯為工作流(workflow),一個接一個自動執行。

外掛開發者可以利用新的 using_model_preference() 函式宣告模型偏好順序,並透過功能檢測(feature detection)匹配可用模型的對應能力,從而降低呼叫成本、縮短處理時間。AI 客戶端還提供一系列高階配置選項,以及 WP_AI_Client_Prompt_Builder 類用於方法呼叫。為簡化升級,wordpress/wp-ai-client 包可自動處理向 7.0 的過渡。

Introducing the AI Client in WordPress 7.0

客戶端 Abilities API(Client-Side Abilities API)

7.0 將 Abilities API 擴充套件到 JavaScript 端,提供 @wordpress/core-abilities@wordpress/abilities 兩個包,涵蓋新能力和混合能力(hybrid abilities),並配有直觀的 UI、命令面板(command palette)以及篩選和查詢功能。

外掛開發者可透過引入 @wordpress/core-abilities 自動拉取並註冊服務端能力(透過 REST API),也可以僅引入 @wordpress/abilities 來處理外掛自身的客戶端能力。註冊後的能力按可自定義的分類組織,能力和分類都可以透過 PHP API 登出。系統支援後設資料註解(meta data annotation),core/abilities 提供 useSelect 用於 React 元件中的響應式查詢。

Client-Side Abilities API in WordPress 7.0

AI 聯結器頁面(Connectors Screen)與聯結器 API(Connectors API)

在儀表盤的 設定 > 聯結器 中,全新的聯結器管理頁面集中展示所有已註冊的聯結器及其註冊後設資料,以卡片形式呈現。系統預設內建三個供應商:Anthropic、Google 和 OpenAI,使用者也可以自行配置連線。

Connectors API 是聯結器頁面的底層擴充套件機制,支援代理(agent)的接入。API 根據供應商後設資料支援兩種認證方式(api_keynone),設計上預留了未來擴充套件更多聯結器型別的空間。Connectors API 利用 WP AI 客戶端的預設登入檔自動發現供應商,透過對應後設資料生成聯結器;非標準認證方式的聯結器儲存在 PHP 登入檔中。開發者可透過 wp_connectors_init 動作(action)覆蓋聯結器後設資料,這將成為後續版本註冊新聯結器型別的核心介面。API 提供三個公共函式用於查詢登入檔,前端 UI 可透過客戶端 JavaScript 註冊進行自定義。

Introducing the Connectors API in WordPress 7.0

二、管理後臺現代化

7.0 全面升級了 WordPress 管理後臺的視覺與互動體驗。新的 “Modern” 配色方案貫穿整個儀表盤,View Transitions API 帶來平滑的頁面切換動畫,新增的命令面板快捷入口讓工具觸手可及,字型管理獨立成頁,視覺化修訂讓編輯歷史一目瞭然。

新後臺配色方案 “Modern”

名為 “Modern” 的新後臺主題全面重新整理了配色、對比度和字型排版(typography)。後臺頭部、定製器(Customizer)、配色選擇器、指令碼載入器、各類使用者函式,乃至多站點(multisite)使用者註冊頁面,都換上了新皮膚。

View Transitions 在 wp-admin 中的應用

7.0 在 wp-admin 中引入了跨檔案檢視過渡(cross-document view transitions)。從選單切換頁面時,內容以平滑的滑動效果切換。每個後臺選單項使用獨立的過渡名稱(transition name),當活動子選單在頁面間變化時觸發過渡動畫。出於無障礙考慮,如果作業系統層面設定了”減少動態效果”(reduced motion)偏好,檢視過渡將不會被啟用。

命令面板快捷入口

管理員和登入使用者在頂部工具欄右側可以看到一個新的 Cmd+K(Mac)或 Ctrl+K(Windows)圖示。點選後展開命令面板(command palette),可從後臺任意位置快速訪問編輯工具集。

字型庫(Font Library)

字型庫在 7.0 中擴充套件為獨立的字型管理頁面。團隊成員可在同一處管理、上傳、安裝字型,適用於區塊主題(block theme)、混合主題(hybrid theme)和經典主題(classic theme)。

視覺化修訂(Visual Revisions)

7.0 讓修訂版本的檢視變得直觀。使用者可以在編輯器中透過滑塊(slider bar)直觀對比兩個修訂版本的差異,檔案檢查器(document inspector)顯示變更摘要,每個變更位置標註了顏色和改動大小,點選即可跳轉到對應位置。

iframe 編輯器(Iframed Editor)

在 7.0 中,當文章裡所有區塊(blocks)均使用 Block API v3 或更高版本時,文章編輯器將強制採用 iframe 模式,提供更穩定的編輯體驗。如果存在低於 v3 的區塊,iframe 將被移除以確保向後相容。

Iframed Editor Changes in WordPress 7.0

三、創意定製工具

7.0 在創意定製方面提供了更精細的控制力,包括移動端導航疊加層自定義、區塊級別的響應式可見性控制,以及區塊樣板(Pattern)編輯模式的全面增強。

移動端自定義導航疊加層(Navigation Overlays)

漢堡選單的疊加層(overlay)現在可以透過站點編輯器(Site Editor),用區塊和樣板自由構建。新增的 Navigation Overlay Close 區塊允許在疊加層內任意位置放置並樣式化關閉按鈕。使用者和主題作者可以靈活定義移動端導航體驗,支援原地疊加層選擇和預覽。主題還可以提供預設模板以加速設定。

Customizable Navigation Overlays in WordPress 7.0

響應式編輯模式(Responsive Editing Mode)

7.0 引入了基於裝置型別的區塊可見性控制。編輯者可以按裝置隱藏或顯示區塊,互不影響其他視口(viewport)。可見性選項的彈窗入口分佈在區塊工具欄、區塊檢查器側邊欄和命令面板三處。在列表檢視(List View)中,設定了可見性規則的區塊旁會顯示圖示,標明該區塊在哪些視口上被隱藏。

7.0 還支援在不同斷點(breakpoint)下設定不同樣式,並允許自定義斷點尺寸。

Block Visibility in WordPress 7.0

區塊樣板編輯與 contentOnly 編輯模式

7.0 對樣板編輯的改進包括:自定義區塊支援樣板覆蓋(Pattern Overrides)、區塊樣板級別的編輯模式(分別針對上下文樣板和符號樣板)、按鈕和列表區塊的父子樹檢視(parent-child tree view),以及選擇退出 contentOnly 模式的能力。

contentOnly 模式此前已在部分樣板中應用,7.0 將其設為預設行為,範圍也進一步擴大。對於不希望受此限制的未同步樣板(unsynced patterns),可透過新的 disableContentOnlyForUnsyncedPatterns 設定或 block_editor_settings_all PHP 過濾器(filter)選擇退出。

如果某個區塊巢狀在 contentOnly 樣板中,外掛開發者需要在 block.json 中將代表區塊內容的屬性(attributes)標註 "role": "content"。這樣做可以保留區塊的可編輯性,避免其在列表檢視中被隱藏。

區塊開發者現在可以在 block.json 中新增 "listView": true 的區塊支援宣告。這會在區塊檢查器中新增一個 “List View” 標籤頁,展示該區塊的專屬檢視,方便編輯者更新和自定義。

Pattern Editing in WordPress 7.0

樣板覆蓋支援自定義區塊

支援區塊繫結(Block Bindings)的區塊屬性現在也支援樣板覆蓋。樣板覆蓋適用於任意區塊(包括自定義區塊),可透過 block_bindings_supported_attributes 過濾器選擇加入。屬性值會呈現在渲染後的區塊標記中——無論動態區塊還是靜態區塊。如果靜態區塊的屬性複雜度超出 HTML API 的處理範圍,可使用 render_callback() 函式確保繫結屬性值正確渲染。

Pattern Overrides in WP 7.0: Support for Custom Blocks

四、設計工具增強

7.0 在區塊和設計工具層面帶來了多項新增能力:新的標題區塊(Headings Block)、圖示區塊(Icons Block)和麵包屑區塊(Breadcrumbs Block);相簿區塊(Gallery Block)新增燈箱(lightbox)支援;導航連結區塊(Navigation Link Block)新增動態 URL 支援;段落支援文字縮排(text indent)和分欄佈局;尺寸支援(dimensions support)加入預設值和寬高比控制。

區塊級自定義 CSS

在 7.0 中,你可以為頁面上的單個區塊直接編寫自定義 CSS,實現逐塊級別的精細樣式控制。

標題區塊(Headings Block)

新的 Headings Block 包含所有標題級別(H1-H6)的變體(variation),支援在側邊欄檢查器中快速切換級別、快速轉換,並在搜尋和斜槓插入器(slash inserter)中顯示。

麵包屑區塊(Breadcrumbs Block)

新的 Breadcrumbs Block 自動反映站點的導航層級,可在主題頭部等站點區域性(site parts)中全域性應用。新增的過濾器允許開發者新增、移除、修改麵包屑路徑,並指定路徑中出現的分類法(taxonomy)和術語(terms)。

Breadcrumb block filters

導航區塊(Navigation Block)

導航區塊的編輯體驗得到改善:插入操作更流暢,樣板編輯和 ContentOnly 模式支援互動 API,捆綁頁面項(bound page items)的呈現方式也獲得了最佳化。

Cover 區塊支援影片嵌入

Cover 區塊(封面區塊)現在支援將影片嵌入為區塊背景。

相簿區塊新增燈箱功能,附帶幻燈片放映選項。插入相簿後,點選連結圖示,選擇”點選放大”即可啟用。

段落區塊新增 <p> 區塊支援

段落(Paragraph)區塊中的文字現在可以排成多欄佈局,並引入了可選擇加入的 textIndent 排版支援(typography support)。

New Block Support: Text Indent (textIndent)

關於新增和改進區塊的完整清單,參見:

Roster of design tools per block (WordPress 7.0 edition)

尺寸支援增強

7.0 在尺寸支援方面有若干增強。高度和寬度區塊支援、段落文字縮排支援、預設值(presets)支援均已就位;core/button 區塊新增偽元素支援,覆蓋 ':hover'':focus'':focus-visible'':active' 四種狀態,可在 theme.json 層面配置。theme.json 中新增了寬度、高度和最小高度的預設尺寸值,區塊變體也可以控制相同的偽元素。定義一組尺寸預設後,不必再跨多個區塊手動設值。

Dimensions Support Enhancements in WordPress 7.0

五、開發者工具箱

7.0 為開發者提供了一套豐富的工具集:PHP 端純程式碼註冊區塊、增強的 Interactivity API、新的外掛列表過濾器,以及為可擴充套件站點編輯器打下的基礎架構。

PHP 端純程式碼區塊註冊(PHP-Only Block Registration)

7.0 允許開發者直接在服務端用 PHP 建立區塊和樣板,透過 Block API 註冊。當區塊宣告中包含 'supports' => array( 'autoRegister' => true ) 以及渲染回撥函式(render callback)時,區塊會被自動註冊,並透過 JavaScript 全域性變數暴露給客戶端。PHP 註冊的區塊屬性可在編輯器中編輯,檢查器控制元件從屬性中自動生成。對於 PHP 自動註冊的區塊,系統會自動新增 DataForm 檢查器控制元件。這種純 PHP 表示形式也支援樣板建立和語法繫結。

PHP-only block registration

Interactivity API(互動 API)

@wordpress/interactivity 包新增 watch() 函式,該函式訂閱回撥函式中訪問的任何訊號(signal),並在這些訊號發生變化時重新執行回撥。對應的 data-wp-watch 指令可繫結到 DOM 元素的生命週期中,響應狀態變化。另外,state.url 值現在於指令處理期間由服務端填充,並在首次客戶端導航發生之前保持不變。

Changes to the Interactivity API in WordPress 7.0

DataViews 與 DataForms

新增 Activity 佈局和 Details 佈局,模態框外觀改進,Field API 支援註冊第三方型別。

DataViews, DataForm, et al. in WordPress 7.0

區塊繫結 API 迭代

區塊繫結與樣板覆蓋功能進一步增強,支援按格式(format)篩選可用屬性源,並與 Field API 對齊。

新外掛列表過濾器

get_views() 中新增了 plugins_list_status_text 過濾器,允許自定義篩選標籤。透過 plugins_list 新增的自定義狀態現在會以標籤頁(tabs)形式顯示,用於篩選相關外掛。標籤頁的文字可使用 plugins_list_status_text 鉤子(hook)自定義。

站點編輯器構建與路由

7.0 為可擴充套件的站點編輯器奠定了基礎:路由驗證、新的 @wordpress/boot 包(允許外掛構建自定義站點編輯器頁面),以及重構後的 @wordpress/scripts(支援從目錄構建,減少對 Webpack 的依賴)。

六、額外開發者福利

以下變更覆蓋 Core 的多個方面,體現了 WordPress 為開發者打造靈活基礎架構的持續投入。

區塊鉤子(Block Hooks)支援類內容自定義文章型別

區塊鉤子邏輯已從各文章型別獨立過濾器遷移到 REST 控制器中統一處理。

更安全的使用者序號產生器制

後臺 設定 > 常規 的新使用者預設角色選擇器中,管理員(Administrator)和編輯(Editor)角色已被移除。站點健康(Site Health)功能會在更新前檢查是否曾選擇了這些高危角色併發出告警。新增的 default_role_dropdown_excluded_roles 過濾器允許開發者自定義排除的角色列表。

CodeMirror 升級到 v5

CodeMirror 編輯器已升級到最新的 v5 版本。CSSLintHTMLHintJSONLint 同步升級,Esprima 替換為 Espree 以支援 ES6 語法和 JavaScript 程式碼檢查。

外部庫更新

PHP 版本變更

七、無障礙改進

7.0 包含多項無障礙(Accessibility)改進。登入密碼重置流程現在會預填充使用者名稱,以符合 WCAG 2.2 標準。新增的 wp_get_image_alttext() 函式可以從圖片的 IPTC 後設資料中匯入替代文字(Alt text)。.screen-reader-text 類新增了 word-break 屬性,確保螢幕閱讀器不會將隱藏文字逐字母朗讀。如前所述,檢視過渡僅在未設定”減少動態效果”時啟用

兩個函式現在透過新的 $use_title_attr 引數可以移除 title 屬性,三個作者連結函式預設不再輸出 title 屬性。

八、更多亮點

除上述主要特性外,7.0 還包含 超過 300 個 Core bug 修復486 個 Gutenberg bug 修復77 個增強和功能請求 以及 35 個已批准任務,均已標記為在 WordPress 7.0 中修復。以下摘錄部分值得關注的變更:

  • 站點健康:OPCache 資訊已新增到 站點健康 > 資訊 > 伺服器 中(Trac #63697
  • 編輯器:樣板儲存時新增名稱/描述後設資料(Trac #64123
  • 指令碼載入器:允許指令碼依賴模組(Trac #61500
  • 指令碼載入器:HTML5 指令碼主題支援已棄用並移除(Trac #64442
  • 常規:允許在 WP_DEBUG 非真值時掛鉤 wp_trigger_error()Trac #60886
  • 多站點:將賬戶標記為垃圾資訊時不再自動將對應網站標記為垃圾資訊(Trac #61146
  • 主題:PHP 8.1 棄用通知處理(Trac #64864
  • 編輯器:所有元件的底部邊距已移除,無邊距樣式成為預設(GB #39358

文章目錄



發表評論

發表回覆

您的郵箱地址不會被公開。 必填項已用 * 標註