WP Plugin Development: Turning the WordPress Plugin Process from Structure to Release into an 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

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

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

Xiaoye