WordPress 原生 REST API 都有哪些功能?

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

最常用的端点,支持:

返回的 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 媒体库的核心接口:

典型用途:移动端上传图片、自动化批量导入产品图、通过 API 构建图库。

2.5 分类与标签(Categories & Tags)— /wp/v2/categories & /wp/v2/tags

管理文章的分类目录和标签:

2.6 分类法(Taxonomies)— /wp/v2/taxonomies

列出站点所有已注册的分类法(包括内置的 category、post_tag 以及自定义文章类型注册的自定义分类法)。这是一个元数据接口,帮你发现”这个站点有哪些分类方式”。

2.7 评论(Comments)— /wp/v2/comments

完整的评论管理接口:

2.8 用户(Users)— /wp/v2/users

管理 WordPress 用户:

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 核心设置(需管理员权限):

这是通过 API 自动化配置 WordPress 站点的关键接口。

2.12 主题(Themes)— /wp/v2/themes

列出已安装的主题及其状态(active/inactive)。支持获取主题的详细信息(名称、版本、作者、描述、截图URL)。注意:核心 REST API 不支持通过此端点激活或安装主题,这些操作需要插件扩展或 WP-CLI。

2.13 插件(Plugins)— /wp/v2/plugins

WordPress 5.5+ 引入的端点,支持:

2.14 搜索(Search)— /wp/v2/search

全站搜索接口,支持:

返回匹配结果列表,每个结果包含 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 的端点分为两类:

操作 需要认证?
读取已发布文章/页面
读取公开的分类/标签/媒体
创建/编辑/删除内容
管理用户/设置/插件/主题 是(管理员权限)
读取自己的用户信息

支持三种认证方式:

  1. Cookie 认证:适用于 WordPress 后台内的 AJAX 请求,自动使用登录态
  2. Application Passwords(应用密码):WordPress 5.6+ 内置,在后台”用户→个人资料”中生成,配合 HTTP Basic Auth 使用。推荐用于外部 API 调用
  3. 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 原生后台的学习成本。

六、最佳实践与注意事项

  1. 始终使用 HTTPS:REST API 传输敏感数据(密码、认证令牌),明文 HTTP 极不安全
  2. 谨慎设置 CORS:如果允许跨域访问,明确限定允许的源(Origin),不要使用通配符 *
  3. 控制请求频率:WordPress 本身没有内置 API 限流,高并发场景下建议使用缓存插件(如 Redis Object Cache)或 API 网关做限流
  4. 善用分页:大量数据查询时务必使用 ?per_page=&page= 参数,避免一次加载全部数据导致超时
  5. 自定义端点要做权限校验:如果注册了自定义端点,permission_callback 不能简单返回 true,必须根据业务需求做鉴权
  6. 利用 _embed 参数:请求时加 ?_embed 可以在一次请求中获取关联资源(如文章的特色图片、作者信息),减少 API 调用次数

七、总结

WordPress 原生 REST API 远不止”读文章”这么简单。它是一套完整的、符合 REST 标准的 HTTP API,覆盖了从内容管理到站点运维的方方面面:

对于开发者来说,掌握 WordPress REST API 意味着你可以把 WordPress 当成一个通用的后端平台来使用,而不只是一个博客系统。无论你是在构建移动 App、单页应用、自动化工具还是企业级集成,REST API 都是你与 WordPress 交互的标准方式。


参考来源:
WordPress 官方 REST API Handbook — https://developer.wordpress.org/rest-api/