# ACPT (Advanced Custom Post Type) 项目分析
## 项目概述
**ACPT** 是一个功能强大的 WordPress 插件,用于创建和管理自定义文章类型(Custom Post Types)、自定义字段(Advanced Custom Fields)、分类法(Taxonomy)管理、内置表单(Forms)和动态区块(Dynamic Blocks)。它提供了一个干净、开发者友好的界面。
- **版本**: 2.0.54
- **作者**: Mauro Cassani
- **许可证**: GPL-2.0+
- **官网**: https://acpt.io
---
## 核心功能
### 1. 自定义文章类型 (Custom Post Types)
- 可视化创建和管理自定义文章类型
- 支持自定义文章类型的所有标准属性
- 提供丰富的配置选项
### 2. 高级自定义字段 (Advanced Custom Fields)
- 强大的元字段(Meta Fields)系统
- 支持多种字段类型(文本、数字、图片、文件、日期、选择器等)
- 重复字段(Repeater)和灵活字段(Flexible)支持
- 用户元数据(User Meta)支持
- 分类法元数据(Taxonomy Meta)支持
- 选项页面(Option Page)支持
### 3. 分类法管理 (Taxonomy Management)
- 创建和管理自定义分类法
- 与自定义文章类型关联
- 支持层级分类法
### 4. 表单系统 (Forms)
- 内置表单构建器
- 前端表单提交
- 表单数据验证
- 邮件通知功能
- API 提交支持
### 5. 动态区块 (Dynamic Blocks)
- Gutenberg 区块生成器
- 动态内容渲染
- 与自定义字段集成
### 6. 模板系统
- 基于 Twig 模板引擎
- 自定义模板支持
- 短代码(Shortcodes)支持
---
## 项目结构
```
advanced-custom-post-type/
├── admin/ # 后台管理界面
├── assets/ # 静态资源(CSS, JS, 图片)
├── cache/ # 缓存目录
├── functions/ # 辅助函数
├── i18n/ # 国际化文件
├── init/ # 初始化文件
│ └── bootstrap.php # 应用启动引导
├── migrations/ # 数据库迁移文件
├── src/ # 核心源代码
│ ├── Admin/ # 后台管理相关
│ ├── Constants/ # 常量定义
│ ├── Core/ # 核心功能
│ │ ├── API/ # REST API (V1)
│ │ ├── CQRS/ # 命令查询职责分离模式
│ │ ├── Data/ # 数据导入导出
│ │ ├── Generators/ # 生成器类
│ │ ├── Helper/ # 辅助类
│ │ ├── JSON/ # JSON 处理
│ │ ├── Models/ # 数据模型
│ │ ├── Repository/ # 数据仓库
│ │ ├── Shortcodes/ # 短代码
│ │ ├── Traits/ # 特性(Traits)
│ │ ├── Validators/ # 验证器
│ │ └── ValueObjects/ # 值对象
│ ├── Includes/ # 包含文件
│ ├── Integrations/ # 第三方集成
│ │ ├── Breakdance/ # Breakdance 页面构建器
│ │ ├── Bricks/ # Bricks 页面构建器
│ │ ├── Divi/ # Divi 主题
│ │ ├── Elementor/ # Elementor 页面构建器
│ │ ├── ElementorPro/ # Elementor Pro
│ │ ├── Gutenberg/ # Gutenberg 编辑器
│ │ ├── Oxygen/ # Oxygen 页面构建器
│ │ ├── WooCommerce/ # WooCommerce
│ │ ├── WPGraphQL/ # WPGraphQL
│ │ ├── Yoast/ # Yoast SEO
│ │ ├── RankMath/ # Rank Math SEO
│ │ ├── WPML/ # WPML 多语言
│ │ ├── Polylang/ # Polylang 多语言
│ │ └── ... # 其他集成
│ └── Utils/ # 工具类
├── templates/ # 模板文件
├── tests/ # 测试文件
├── vendor/ # Composer 依赖
├── advanced-custom-post-type.php # 插件入口文件
├── composer.json # Composer 配置
├── config.ini # 配置文件
└── changelog.md # 更新日志
```
---
## 核心模块详解
### 1. Core/API (REST API)
- 提供 V1 版本 REST API
- 控制器处理各种数据操作
- 支持外部系统集成
### 2. Core/CQRS (命令查询职责分离)
- **Command**: 处理写操作(保存、更新、删除)
- SaveCustomPostTypeCommand
- SaveMetaGroupCommand
- SaveFormCommand
- SaveTaxonomyCommand
- HandleFormSubmissionCommand
- 等等...
- **Query**: 处理读操作
### 3. Core/Generators (生成器)
负责生成各种 WordPress 组件:
- **CommentGenerator**: 评论相关
- **CustomPostTypeGenerator**: 自定义文章类型
- **FormGenerator**: 表单
- **MetaGenerator**: 元字段
- **OptionPageGenerator**: 选项页面
- **TaxonomyGenerator**: 分类法
- **UserGenerator**: 用户相关
### 4. Core/Models (数据模型)
核心数据模型:
- **CustomPostTypeModel**: 自定义文章类型模型
- **MetaGroupModel/MetaFieldModel**: 元数据模型
- **FormModel**: 表单模型
- **TaxonomyModel**: 分类法模型
- **DynamicBlockModel**: 动态区块模型
- **OptionPageModel**: 选项页面模型
- **SettingsModel**: 设置模型
### 5. Integrations (第三方集成)
与主流 WordPress 插件和主题的深度集成:
- **页面构建器**: Elementor, Elementor Pro, Bricks, Breakdance, Divi, Oxygen, Zion, GenerateBlocks
- **SEO插件**: Yoast SEO, Rank Math, SEOPress, Slim SEO
- **多语言**: WPML, Polylang
- **电商**: WooCommerce
- **其他**: WPGraphQL, WP All Import/Export, WP Grid Builder
---
## 核心业务逻辑
### 1. 插件生命周期
```
激活(activationHook) → 运行(run) → 停用(deactivationHook)
```
### 2. 数据流
```
用户操作 → Command → Repository → 数据库
↓
Generators → WordPress API
```
### 3. 元字段系统架构
```
MetaGroup (元组)
└── MetaField (字段)
├── MetaOption (选项 - 针对选择类字段)
└── MetaAdvancedOption (高级选项)
```
### 4. 表单提交流程
```
前端表单 → 验证 → HandleFormSubmissionCommand → 保存数据 → 邮件通知 → 重定向
```
### 5. 缓存机制
- 使用 phpfastcache 库
- 支持多种缓存驱动(文件、Redis、Memcached等)
- 自动缓存失效策略
---
## 核心代码示例
### 插件主类初始化
```php
// advanced-custom-post-type.php
$plugin = new ACPT_Plugin();
$plugin->run();
```
### 自定义文章类型创建
```php
... (content truncated)