用途:本技能适用于涉及 WordPress Abilities API 的任务,包括在 PHP 中注册 abilities 或 ability 分类、通过 REST(wp-abilities/v1)向客户端暴露能力、在 JS 中(尤其 @wordpress/abilities)消费能力,以及诊断“ability 不显示”“客户端看不到 ability”“REST 返回为空”等问题。
必要输入:仓库根目录(未做准备时先运行 wp-project-triage);目标 WordPress 版本及属于 WP core 还是插件/主题;改动应放在插件、主题还是 mu-plugin。
使用步骤:先确认可用性与版本约束,若是 WP core 工作检查 signals.isWpCoreCheckout 与 versions.wordpress.core,目标低于 WP 6.9 时可能需改用 Abilities API 插件/包而非依赖核心。再在仓库中搜索 wp_register_ability(、wp_register_ability_category(、wp_abilities_api_init、wp_abilities_api_categories_init、wp-abilities/v1、@wordpress/abilities,判断是全新引入还是仅消费。如需逻辑分组,可提前注册 ability 分类。随后用 PHP 注册 ability:稳定且带命名空间的 id、label/description、category,以及 meta——信息性 ability 设 readonly: true,需对客户端可见的设 show_in_rest: true,并使用文档规定的 init 钩子注册以保证加载时机。接着验证 REST 端点存在且返回预期结果,若客户端仍不可见,确认 meta.show_in_rest 已启用且查询了正确端点。需要时从 JS 消费,优先使用 @wordpress/abilities API,并确保构建工具包含该依赖并被项目构建流程打包。
验证:改动后 wp-project-triage 显示 signals.usesAbilitiesApi: true(如适用);在 WP 环境中 wp-abilities/v1 下的端点按预期返回你的 ability 与分类;如仓库有测试,在 PHP 的注册与 meta 暴露、JS 的消费与 UI 门控附近补充覆盖。
失败模式与调试:ability 始终不出现,多为注册代码未运行(钩子错误/文件未加载)、缺少 meta.show_in_rest、分类/ID 不匹配;REST 有但 JS 无,多为 REST base/命名空间错误、JS 依赖未打包、对象或页面缓存掩盖变更。
升级与参考:对版本支持不确定时,确认目标 WP 核心版本及 Abilities API 应来自核心还是插件;规范细节参见 references/rest-api.md 与 references/php-registration.md。