WordPress 高级架构
本技能聚焦高级 WordPress 开发模式,包含 REST API 端点、WP-CLI 命令、性能优化,以及面向可扩展 WordPress 应用的缓存策略。
一、REST API 开发
WordPress REST API 提供了创建自定义端点的接口,支持恰当的身份认证、参数校验与响应格式化。资料以“书籍(book)”自定义文章类型为例展开。
1. 端点注册与命名空间
通过 rest_api_init 钩子调用 register_rest_route() 注册路由。示例使用命名空间 myplugin/v1 以支持版本化,并定义了以下路由:
GET /wp-json/myplugin/v1/books:公开端点,带per_page(默认 10,需为大于 0 且不超过 100 的数值,使用absint清洗)与page(默认 1)参数。GET /wp-json/myplugin/v1/books/(?P<id>\d+):公开端点,id参数经数值校验与absint清洗。POST /wp-json/myplugin/v1/books:需认证,权限回调为current_user_can( 'edit_posts' );参数包括必填的title(字符串、非空、sanitize_text_field)、可选的content(wp_kses_post)、status(默认draft,枚举为draft/publish/private)。PUT /wp-json/myplugin/v1/books/(?P<id>\d+):权限回调为current_user_can( 'edit_post', $book_id ),参数含title、content。DELETE /wp-json/myplugin/v1/books/(?P<id>\d+):权限回调为current_user_can( 'delete_post', $book_id )。
2. 完整 CRUD 实现
资料给出各回调函数的实现要点:
- 列表回调:根据
per_page、page计算offset,使用WP_Query查询已发布书籍;返回books、total、page、per_page、total_pages,并通过add_link添加self、prev、next等 HATEOAS 链接。 - 单条获取:校验文章存在且类型为
book,否则返回WP_Error(book_not_found,状态 404);返回 id、title、content(经the_content过滤器)、excerpt、author、date、modified、status、link、featured_image 以及 meta(如_isbn、_pages)。 - 创建:使用
wp_insert_post写入,处理WP_Error(book_creation_failed,状态 500);可按需写入_isbn、_pages元数据;成功后设置状态码 201 并添加Location响应头。 - 更新:使用
wp_update_post,仅更新请求中携带的参数,失败返回book_update_failed(状态 500)。 - 删除:使用
wp_delete_post,支持force参数区分移入回收站与彻底删除,返回deleted、id与相应提示信息。
3. 复杂端点的控制器模式
对复杂端点,资料建议继承 WP_REST_Controller 组织逻辑。示例 Books_Controller 定义 $namespace = 'myplugin/v1'、$rest_base = 'books',在 register_routes() 中同时注册集合路由与单项路由,映射 WP_REST_Server 的 READABLE、CREATABLE、EDITABLE、DELETABLE 常量到 get_items、create_item、update_item、delete_item 等方法,并提供 get_items_permissions_check 等权限检查方法(公开端点返回 true,写操作检查对应能力)。
控制器还通过 get_public_item_schema() 定义 JSON Schema(draft-04),描述 id(整数、只读)、title(字符串、必填)、content、status(枚举)等属性及各自支持的 context(view/edit/embed)。最后在 rest_api_init 中实例化控制器并调用 register_routes()。
4. REST API 身份认证
资料提到应用密码(Application Passwords,WordPress 5.6+),用户在 /wp-admin/profile.php 生成密码。该部分内容在资料结尾处被截断,后续细节暂未提供。
二、WP-CLI 命令、性能优化与缓存策略
技能描述中提到包含 WP-CLI 命令、性能优化与缓存策略,但所提供的资料正文未展开这三部分的具体内容,相关细节暂未提供。
三、适用场景与限制
- 适用场景:需要为 WordPress 站点开发自定义 REST API(如自定义文章类型的增删改查)、按控制器模式组织复杂接口、以及关注可扩展性与性能优化的 WordPress 插件或站点开发。
- 限制:资料中未说明运行环境版本要求、定价、平台约束或性能数据;WP-CLI、性能优化与缓存策略部分缺乏具体内容,暂未提供。