wp-block-development:Gutenberg 區塊全生命週期開發 Skill

前言

改 block.json、換保存結構、加動態渲染,很容易在編輯器裏看到「Invalid block」、屬性存不住,或在 WordPress 7.0 的 iframe 編輯器裏樣式對不上。區塊開發牽涉元數據、序列化、資源作用域和 deprecation 鏈,步驟順序錯了,問題往往要回頭拆。

下面介紹 WordPress 官方 Agent Skills 裏的 wp-block-development:按固定流程做新建、註冊、渲染和遷移,並指向倉庫內 reference 文檔與腳本。

這是什麼

wp-block-development 是 WordPress agent-skills 倉庫中的 Skill,面向 Gutenberg 區塊從腳手架到上線的完整工作流。

官方描述覆蓋:block.json 元數據、register_block_type / register_block_type_from_metadata、attributes 與序列化、supports、動態渲染(render.php / render_callback)、deprecations 遷移、viewScript 與 viewScriptModule,以及 @wordpress/scripts、@wordpress/create-block 的構建與測試。

兼容性(SKILL 元數據): 目標 WordPress 7.0+(PHP 7.4.0+);基於文件系統的 Agent,需要 bash 與 node;部分流程依賴 WP-CLI。

核心功能

資料中列出的能力如下,均對應 SKILL 中的 Procedure 與 references。

方向 內容
項目定位 配合 wp-project-triage 的 detect_wp_project.mjs,用 list_blocks.mjs 掃描含 block.json 的區塊根目錄
新建區塊 推薦 @wordpress/create-block 腳手架;需要 Interactivity API 時用 interactive 模板
apiVersion 3 WordPress 6.9+ 在 schema 上強制 apiVersion 3;爲 iframe 編輯器(WordPress 7.0)準備樣式與腳本作用域
區塊模型 靜態(save() + 穩定序列化)、動態(render / render_callback)、前端交互(優先 viewScriptModule,Interactivity 用 wp-interactivity-api)
元數據與安全修改 block.json 字段說明見 references/block-json.md;改 name 會破壞兼容;改保存結構需 deprecated
服務端註冊 PHP 元數據註冊,便於翻譯、條件加載與動態渲染(references/registration.md)
編輯 / 保存 / 渲染 useBlockProps、useBlockProps.save()、get_block_wrapper_attributes();內嵌塊用 useInnerBlocksProps()
屬性與序列化 確認 comment / HTML / context 來源;避免已廢棄的 meta source(references/attributes-and-serialization.md)
遷移 deprecated 從新到舊、save 與可選 migrate(references/deprecations.md)
工具鏈 沿用倉庫已有的 @wordpress/scripts、wp-env 等(references/tooling-and-testing.md)

驗證清單: 插入器可插入;保存重載無 Invalid block;前端輸出符合靜態或動態預期;編輯器與前端資源加載正確;跑 triage 推薦的 lint / build / test。

排錯入口: references/debugging.md,以及屬性、deprecation 相關 reference。

安裝與啓用

通過 officialskills.sh 公佈的命令安裝到本地 Skills 環境:

npx skills add https://github.com/WordPress/agent-skills --skill wp-block-development

也可把 Skill 目錄鏈接交給支持 Agent Skills 的編碼助手,由其按項目約定安裝:

https://github.com/WordPress/agent-skills/tree/trunk/skills/wp-block-development

安裝後,Agent 按 SKILL.md 的 Procedure 執行;倉庫內 references/ 與 scripts/ 爲配套說明與腳本,無需單獨「配置文件」字段(資料未給出 Cursor / Codex CLI / Claude Code 的差異說明,此處不展開)。

典型用法

使用前準備:倉庫根路徑、目標載體(插件 / 主題 / 整站)、區塊命名空間與 block.json 路徑、目標 WordPress 版本區間(尤其涉及 module / viewScriptModule)。整站倉庫需明確區塊落在哪個插件或主題。

0)定位區塊

先做項目分診,再列出區塊目錄:

node skills/wp-project-triage/scripts/detect_wp_project.mjs
node skills/wp-block-development/scripts/list_blocks.mjs

確認要改的目錄即爲包含 block.json 的區塊根。

1)新建區塊(可選)

用 @wordpress/create-block 腳手架,閱讀 references/creating-new-blocks.md。腳手架完成後再次運行 list_blocks.mjs 確認路徑,再繼續元數據與註冊。

2)升級到 apiVersion 3

在 block.json 中設置 apiVersion: 3(自 v2 遷移通常只改該字段,但需在啓用 iframe 編輯器的本地環境驗證)。確保樣式句柄寫在 block.json 中,避免 iframe 內樣式缺失;注意第三方腳本對 window 的作用域。細節見 references/block-json.md。

3)改元數據並註冊

按靜態 / 動態 / 交互模型實現 edit / save / render,服務端優先 register_block_type_from_metadata。動態塊見 references/dynamic-rendering.md;容器塊見 references/inner-blocks.md。

4)改保存結構時加 deprecation

若調整已發佈內容中的 markup 或屬性:

  1. 在 deprecated 中從新版本到舊版本依次聲明;
  2. 爲舊版提供 save,必要時用 migrate 規範化 attributes。

詳見 references/deprecations.md,可避免保存後出現 Invalid block。

5)構建與本地驗證

使用項目已有的 npm script(@wordpress/scripts)或 wp-env 做本地 WordPress 與 E2E,參見 references/tooling-and-testing.md。

適用場景與注意

適合:

  • 新建或維護插件 / 主題中的 Gutenberg 區塊;
  • 修復 block invalid、不保存、屬性不持久化;
  • 爲靜態塊增加 render.php 或服務端 render_callback;
  • 規劃 apiVersion 2 → 3,適配 WordPress 7.0 編輯器 iframe;
  • 容器塊與 Inner Blocks 的包裝屬性與遷移。

限制與注意:

  • 目標環境爲 WordPress 7.0+;舊版本行爲以官方 Developer Resources 與 Gutenberg 文檔爲準(SKILL 中的 Escalation 節)。
  • 部分步驟依賴 WP-CLI 與 node 腳本,純手動改文件而不跑 list / triage 時,Agent 仍可按 reference 指引,但定位成本更高。
  • name 視爲穩定 API;未配 deprecation 就改保存 HTML,是資料中明確列出的常見坑。

結尾

wp-block-development 把區塊開發拆成可覈對的分步流程:先掃 block.json、選對靜態或動態模型、安全改元數據、用 deprecation 兜住歷史內容,並用倉庫內 reference 對齊註冊與序列化。它是 WordPress 在 Agent Skills 生態裏針對核心編輯體驗的一條官方路徑。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜