48 lines
No EOL
2.7 KiB
Markdown
48 lines
No EOL
2.7 KiB
Markdown
---
|
|
name: woocommerce-backend-dev
|
|
description: Add or modify WooCommerce backend PHP code following project conventions. Use when creating new classes, methods, hooks, or modifying existing backend code. **MUST be invoked before writing any PHP unit tests.**
|
|
---
|
|
|
|
# WooCommerce 后端开发
|
|
|
|
本技能提供根据项目标准和约定开发 WooCommerce 后端 PHP 代码的指导。
|
|
|
|
## 何时使用此技能
|
|
|
|
**在以下情况前务必调用此技能:**
|
|
|
|
- 撰写新的 PHP 单元测试(`*Test.php` 文件)
|
|
- 创建新的 PHP 类
|
|
- 修改现有的后端 PHP 代码
|
|
- 添加钩子或过滤器
|
|
|
|
## 说明
|
|
|
|
添加或修改后端 PHP 代码时,请遵循 WooCommerce 项目约定:
|
|
|
|
1. **创建新的代码结构**:有关创建类和组织文件的约定,请参阅 [file-entities.md](.ai/skills/woocommerce-backend-dev/zh-cn/file-entities)(但新的单元测试文件请参阅 [unit-tests.md](.ai/skills/woocommerce-backend-dev/zh-cn/unit-tests))。
|
|
2. **命名约定**:有关方法、变量和参数的命名,请参阅 [code-entities.md](.ai/skills/woocommerce-backend-dev/zh-cn/code-entities)
|
|
3. **编码风格**:有关通用编码标准和最佳实践,请参阅 [coding-conventions.md](.ai/skills/woocommerce-backend-dev/zh-cn/coding-conventions)
|
|
4. **类型注解**:有关 PHPStan 感知的 PHPDoc 注解,请参阅 [type-annotations.md](.ai/skills/woocommerce-backend-dev/zh-cn/type-annotations)
|
|
5. **使用钩子**:有关钩子回调约定和文档,请参阅 [hooks.md](.ai/skills/woocommerce-backend-dev/zh-cn/hooks)
|
|
6. **依赖注入**:有关 DI 容器使用,请参阅 [dependency-injection.md](.ai/skills/woocommerce-backend-dev/zh-cn/dependency-injection)
|
|
7. **数据完整性**:有关执行 CRUD 操作时确保数据完整性,请参阅 [data-integrity.md](.ai/skills/woocommerce-backend-dev/zh-cn/data-integrity)
|
|
8. **撰写测试**:有关单元测试约定,请参阅 [unit-tests.md](.ai/skills/woocommerce-backend-dev/zh-cn/unit-tests)
|
|
|
|
## 核心原则
|
|
|
|
- 始终遵循 WordPress 编码标准
|
|
- 使用类方法而非独立函数
|
|
- 默认将新的内部类放置在 `src/Internal/` 目录中
|
|
- 使用带有 `Automattic\WooCommerce` 命名空间的 PSR-4 自动加载
|
|
- 为新功能编写全面的单元测试
|
|
- 提交更改前运行代码检查和测试
|
|
|
|
## 版本信息
|
|
|
|
确定 `@since` 注解中使用的下一个 WooCommerce 版本号:
|
|
|
|
- 读取 **trunk 分支** 上 `includes/class-woocommerce.php` 中的 `$version` 属性
|
|
- 如果存在 `-dev` 后缀,请移除
|
|
- 示例:如果 trunk 显示 `10.4.0-dev`,则使用 `@since 10.4.0`
|
|
- 注意:当审查针对 trunk 的 PR 时,即使 trunk 中的版本相对于已发布版本看起来是"未来"版本,它也是正确的 |