WordPress 原生 REST API 都有哪些功能?
核心观点:WordPress 原生 REST API 不仅仅是”读文章”的接口。它涵盖了文章、页面、媒体、用户、评论、分类法、设置、区块、插件、主题等十几类资源,配合认证机制可以实现从内容管理到站点运维的几乎所有操作。本文逐一拆解所有核心端点及其实际用途。
一、什么是 WordPress REST API?
WordPress REST API 是 WordPress 4.7(2016年)起内置的核心功能。它提供了一套基于 REST 架构风格的 HTTP 接口,使用 JSON 作为数据交换格式,允许外部应用通过标准的 HTTP 方法(GET/POST/PUT/PATCH/DELETE)与 WordPress 站点交互。
简单来说:有了 REST API,你可以用任何编程语言、任何平台来操作 WordPress——无论是写一个手机 App、一个自动化脚本、一个第三方管理后台,还是构建 Headless CMS 架构。
所有 API 的基础路径为:https://你的网站.com/wp-json/wp/v2/
二、内置端点全览
WordPress 核心在 wp/v2 命名空间下提供了以下 20+ 类资源端点:
2.1 文章(Posts)— /wp/v2/posts
最常用的端点,支持:
- GET — 获取文章列表,支持分页、排序、按分类/标签/作者/状态筛选
- POST — 创建新文章(需认证)
- GET /{id} — 获取单篇文章详情
- PUT/PATCH /{id} — 更新文章(标题、内容、状态、分类等)
- DELETE /{id} — 删除文章(默认移入回收站,加
?force=true永久删除)
返回的 JSON 包含标题、内容(rendered + raw)、摘要、特色图片ID、分类、标签、作者、发布时间等完整字段。
2.2 页面(Pages)— /wp/v2/pages
与 Posts 接口几乎相同,区别在于 Pages 是层级结构(有 parent 字段),且不关联分类和标签。
2.3 文章修订(Post/Page Revisions)— /wp/v2/posts/{id}/revisions
获取某篇文章的所有历史修订版本。WordPress 自动保存的每一版修改都可以通过此接口追溯和恢复。
2.4 媒体(Media)— /wp/v2/media
管理 WordPress 媒体库的核心接口:
- GET — 列出媒体文件,支持按类型(image/video/audio)、日期、MIME 类型筛选
- POST — 上传新文件到媒体库(需 multipart/form-data 格式,需认证)
- GET/{id} — 获取单个媒体详情(URL、尺寸、alt文本、元数据)
- PUT/{id} — 更新媒体元信息
- DELETE/{id} — 删除媒体文件
典型用途:移动端上传图片、自动化批量导入产品图、通过 API 构建图库。
2.5 分类与标签(Categories & Tags)— /wp/v2/categories & /wp/v2/tags
管理文章的分类目录和标签:
- 支持 CRUD 全操作
- Categories 有层级结构(parent 字段),Tags 是扁平结构
- 返回 name、slug、description、count(该分类下文章数)等
2.6 分类法(Taxonomies)— /wp/v2/taxonomies
列出站点所有已注册的分类法(包括内置的 category、post_tag 以及自定义文章类型注册的自定义分类法)。这是一个元数据接口,帮你发现”这个站点有哪些分类方式”。
2.7 评论(Comments)— /wp/v2/comments
完整的评论管理接口:
- GET — 列出评论,可按文章ID、用户、状态(approved/hold/spam)筛选
- POST — 创建评论
- PUT/{id} — 编辑评论内容或状态
- DELETE/{id} — 删除评论
2.8 用户(Users)— /wp/v2/users
管理 WordPress 用户:
- GET — 列出用户(公开信息),可按角色、搜索词筛选
- GET /me — 获取当前认证用户的完整信息(需认证)
- POST — 创建新用户(需管理员权限)
- PUT/{id} — 更新用户信息
- DELETE/{id} — 删除用户(需
?reassign={other_user_id}转移内容)
2.9 文章类型(Post Types)— /wp/v2/types
列出站点所有已注册的文章类型(post、page、以及插件/主题注册的自定义类型如 product、portfolio 等)。返回每种类型的 REST 基础路由、支持的分类法、是否公开等元信息。
2.10 文章状态(Post Statuses)— /wp/v2/statuses
列出所有可用的文章状态:publish、draft、pending、private、trash 等。每种状态返回其公开性(public)、是否受保护(protected)等属性。
2.11 设置(Settings)— /wp/v2/settings
读写 WordPress 核心设置(需管理员权限):
- 站点标题(title)、副标题(description)
- 站点地址(url)、WordPress 地址
- 时区(timezone)、日期格式、语言
- 默认文章分类、默认文章格式
- 每页文章数、是否开放注册、默认用户角色
- 评论设置(是否允许评论、审核策略等)
这是通过 API 自动化配置 WordPress 站点的关键接口。
2.12 主题(Themes)— /wp/v2/themes
列出已安装的主题及其状态(active/inactive)。支持获取主题的详细信息(名称、版本、作者、描述、截图URL)。注意:核心 REST API 不支持通过此端点激活或安装主题,这些操作需要插件扩展或 WP-CLI。
2.13 插件(Plugins)— /wp/v2/plugins
WordPress 5.5+ 引入的端点,支持:
- GET — 列出所有已安装插件(名称、状态、版本、描述)
- POST — 安装新插件(通过 wordpress.org 的 slug)
- PUT/{plugin} — 激活/停用插件
- DELETE/{plugin} — 删除插件
2.14 搜索(Search)— /wp/v2/search
全站搜索接口,支持:
- 按关键词搜索
- 限定搜索类型(post、page、category 等)
- 按文章类型筛选(
?subtype=post) - 分页和排序
返回匹配结果列表,每个结果包含 id、title、url、type、subtype。
2.15 区块(Blocks)— /wp/v2/blocks
WordPress 5.0+ 引入的可复用区块(Reusable Blocks)管理接口。支持对区块的 CRUD 操作,区块内容以序列化的 HTML 格式存储。
2.16 区块类型(Block Types)— /wp/v2/block-types
列出站点所有已注册的区块类型(段落、标题、图片、列表、引用、自定义区块等)。返回每种区块的名称、图标、分类、属性定义等元信息。
2.17 区块渲染器(Block Renderer)— /wp/v2/block-renderer
服务端渲染指定区块的 HTML 输出。传入区块名称和属性,返回渲染后的 HTML。对构建无头 WordPress 前端至关重要——你可以拿到区块的结构化数据,也能拿到最终 HTML。
2.18 区块目录(Block Directory)— /wp/v2/block-directory/search
搜索 WordPress.org 区块目录中的可用区块,支持按关键词搜索并返回匹配的区块插件信息。
三、认证机制:公开 vs 受保护
WordPress REST API 的端点分为两类:
| 操作 | 需要认证? |
|---|---|
| 读取已发布文章/页面 | 否 |
| 读取公开的分类/标签/媒体 | 否 |
| 创建/编辑/删除内容 | 是 |
| 管理用户/设置/插件/主题 | 是(管理员权限) |
| 读取自己的用户信息 | 是 |
支持三种认证方式:
- Cookie 认证:适用于 WordPress 后台内的 AJAX 请求,自动使用登录态
- Application Passwords(应用密码):WordPress 5.6+ 内置,在后台”用户→个人资料”中生成,配合 HTTP Basic Auth 使用。推荐用于外部 API 调用
- OAuth / JWT 插件:更复杂的认证需求可通过第三方插件实现
四、自定义端点:无限扩展能力
WordPress REST API 的真正威力在于你可以注册自己的端点。使用 register_rest_route() 函数,任何插件或主题都可以在自定义命名空间下添加新的路由。
add_action('rest_api_init', function () {
register_rest_route('myplugin/v1', '/stats', [
'methods' => 'GET',
'callback' => function () {
return ['total_posts' => wp_count_posts()->publish];
},
'permission_callback' => '__return_true',
]);
});
这让 WordPress REST API 从一个”内容管理接口”变成了一个通用的后端服务平台——你可以通过它暴露任何业务逻辑:订单查询、数据统计、外部系统对接、自定义工作流等。
SHOPAGG AI Deployer 插件本身就是一个典型案例——它在 shopagg-ai-deployer/v1 命名空间下注册了数十个自定义端点,实现了代码部署、备份恢复、缓存管理、文章操作等远超 WordPress 原生的功能。
五、实际应用场景
5.1 Headless CMS(无头 CMS)
最典型的用法。WordPress 负责后端内容管理,前端用 React/Vue/Next.js 等框架通过 REST API 获取数据渲染页面。这种架构实现了前后端完全分离,前端可以部署在 CDN 上获得极致性能。
5.2 移动 App 后端
用 REST API 为 iOS/Android App 提供内容服务——新闻阅读、电商产品浏览、用户评论等。不需要单独开发后端,WordPress 就是现成的 CMS + 用户系统。
5.3 自动化脚本与批量操作
通过 API 批量创建文章、导入产品数据、同步多站点内容、定时发布等。结合 WP-CLI 使用更加强大。
5.4 第三方系统集成
将 WordPress 的内容同步到 CRM、ERP、邮件营销平台;或将外部数据写入 WordPress。REST API 是连接 WordPress 与企业技术栈的桥梁。
5.5 自定义管理后台
为特定角色(编辑、作者、客户)构建简化的管理界面,只暴露他们需要的功能,降低 WordPress 原生后台的学习成本。
六、最佳实践与注意事项
- 始终使用 HTTPS:REST API 传输敏感数据(密码、认证令牌),明文 HTTP 极不安全
- 谨慎设置 CORS:如果允许跨域访问,明确限定允许的源(Origin),不要使用通配符
* - 控制请求频率:WordPress 本身没有内置 API 限流,高并发场景下建议使用缓存插件(如 Redis Object Cache)或 API 网关做限流
- 善用分页:大量数据查询时务必使用
?per_page=&page=参数,避免一次加载全部数据导致超时 - 自定义端点要做权限校验:如果注册了自定义端点,
permission_callback不能简单返回true,必须根据业务需求做鉴权 - 利用
_embed参数:请求时加?_embed可以在一次请求中获取关联资源(如文章的特色图片、作者信息),减少 API 调用次数
七、总结
WordPress 原生 REST API 远不止”读文章”这么简单。它是一套完整的、符合 REST 标准的 HTTP API,覆盖了从内容管理到站点运维的方方面面:
- 内容类:Posts、Pages、Media、Comments、Blocks
- 组织类:Categories、Tags、Taxonomies、Post Types、Statuses
- 管理类:Users、Settings、Themes、Plugins
- 工具类:Search、Block Renderer、Revisions
- 扩展类:register_rest_route 自定义端点
对于开发者来说,掌握 WordPress REST API 意味着你可以把 WordPress 当成一个通用的后端平台来使用,而不只是一个博客系统。无论你是在构建移动 App、单页应用、自动化工具还是企业级集成,REST API 都是你与 WordPress 交互的标准方式。
参考来源:
WordPress 官方 REST API Handbook — https://developer.wordpress.org/rest-api/