wp-plugin-development:把 WordPress 插件從結構到發佈的流程寫進 Agent Skill

前言

在 WordPress 裏做插件,常見難點不是「能不能寫出一個功能」,而是生命週期、後臺設置和安全細節容易漏:激活鉤子註冊位置不對、Settings API 沒接上 sanitize、卸載時數據沒清乾淨。官方 Plugin Handbook 和安全文檔很全,但 Agent 在改代碼時往往要跨多份文檔自己拼順序。

下面介紹 WordPress 官方 Agent Skills 倉庫裏的 wp-plugin-development:把插件架構、Hooks、Settings API、數據與定時任務、安全基線以及發佈打包,整理成可執行的步驟與參考文檔索引,並與同倉庫裏的區塊開發類 Skill 形成互補——一個覆蓋傳統插件主戰場,一個覆蓋區塊側開發。

這是什麼

wp-plugin-development 是 WordPress/agent-skills 下的一個 Skill,面向「從初始架構到發佈打包」的插件開發工作流。

Skill 元數據中的說明概括爲:在開發 WordPress 插件時使用,涵蓋架構與 Hooks、激活/停用/卸載、管理端 UI 與 Settings API、數據存儲、定時任務、安全(nonces、capabilities、清洗與轉義),以及發佈打包。

兼容性與環境(以 SKILL front matter 爲準):

  • 目標 WordPress 7.0+,PHP 7.4.0+
  • 基於文件系統的 Agent,需要 bash + node
  • 部分流程需要 WP-CLI

核心功能

以下能力均來自官方 SKILL 正文,按推薦執行順序組織。

項目分診與插件入口定位

  1. 運行項目分診腳本:
node skills/wp-project-triage/scripts/detect_wp_project.mjs
  1. 掃描插件頭信息(確定性掃描):
node skills/wp-plugin-development/scripts/detect_plugins.mjs

若倉庫是整個站點,應先選定 wp-content/plugins/ 或 mu-plugins/ 下的具體插件再改代碼。

可預期的插件架構

  • 單一引導文件(帶插件頭的主文件)
  • 避免在文件加載時產生重副作用;通過 Hooks 加載
  • 優先用獨立的 loader/類註冊 Hooks
  • 管理端代碼放在 is_admin() 或管理端 Hooks 之後,減輕前臺開銷

詳細約定見 Skill 內 references/structure.md。

Hooks 與生命週期

激活相關 Hooks 易出錯,官方給出的約束包括:

  • 在頂層註冊激活/停用 Hook,不要嵌在其他 Hook 裏
  • 僅在需要時 flush 重寫規則,且在註冊 CPT/規則之後
  • 卸載路徑要明確且安全:uninstall.php 或 register_uninstall_hook

見 references/lifecycle.md。

Settings API 與管理端 UI

優先用 Settings API 管理選項:

  • register_setting()、add_settings_section()、add_settings_field()
  • 通過 sanitize_callback 做清洗

見 references/settings-api.md。

安全基線

發佈前應默認檢查:

  • 輸入儘早校驗/清洗,輸出在展示前轉義
  • Nonce 防 CSRF,同時用 capability 做授權
  • 不直接信任 $_POST / $_GET;使用 wp_unslash() 並只取明確鍵名
  • SQL 使用 $wpdb->prepare(),避免字符串拼接 SQL

見 references/security.md。

數據存儲、Cron 與遷移(按需)

  • 小配置優先用 options;確有必要再用自定義表
  • Cron 任務應冪等,並提供手動執行路徑(WP-CLI 或管理端)
  • 表結構變更要有升級例程並記錄 schema 版本

見 references/data-and-cron.md。

驗證與常見故障

驗證清單:插件激活無 fatal/notice;設置可讀寫且 capability + nonce 生效;卸載只刪除預期數據;若倉庫有 PHPUnit/PHPCS 或前端構建,應跑通。

典型故障(節選):

  • 激活 Hook 不觸發:註冊不在主文件作用域、主文件路徑錯誤、或網絡激活等
  • 設置不保存:未 register_setting、option group 錯誤、缺少 capability、nonce 失敗
  • 安全回退:有 nonce 無 capability,或輸入已清洗但輸出未轉義

見 references/debugging.md。更深細節應查 Plugin Handbook 與安全指南,而不是自造模式。

安裝與啓用

officialskills.sh 列出的安裝方式爲:

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

也可將 Skill 目錄鏈接交給支持 Agent Skills 的編碼助手安裝:

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

資料中未區分 Cursor、Codex CLI、Claude Code 的安裝差異;以上述 npx skills add 與倉庫路徑爲準。

典型用法

開始插件相關任務前,Agent 應拿到:

  • 倉庫根目錄與目標插件路徑(若已知,主插件文件路徑)
  • 運行環境:單站點還是多站點;是否適用 WP.com 約定
  • 目標 WordPress 與 PHP 版本(影響 API 與 $wpdb->prepare() 佔位符等行爲)

適用工作示例(官方 When to use):

  • 新建或重構插件結構(bootstrap、includes、命名空間/類)
  • 添加 actions/filters
  • 激活/停用/卸載行爲與遷移
  • 設置頁、選項、管理端 UI(Settings API)
  • 安全修復(nonces、capabilities、清洗/轉義、SQL 安全)
  • 發佈打包(構建產物、readme、資源)

適用場景與注意

適合:需要在 Agent 輔助下系統完成插件全生命週期開發的 WordPress 開發者;與區塊開發 Skill 搭配時,可分別覆蓋「經典插件」與「區塊」兩條主線。

注意:

  • 依賴 node 腳本做分診與插件檢測,環境需具備 bash 與 node
  • 部分流程依賴 WP-CLI,本地或 CI 需預先安裝
  • 目標版本爲 WordPress 7.0+ / PHP 7.4+,舊環境 API 與佔位符行爲可能不同

結尾

wp-plugin-development 把插件開發的推薦順序、參考文檔入口和常見失敗模式寫進一份 Skill,減少在 Handbook 與安全文檔之間手工對照的成本。官方目錄:

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

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

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

小夜