如何用 WordPress REST API 开发自定义功能?
本文目录导读:
- 1. WordPress REST API 简介
- 2. WordPress REST API 的基本使用
- 3. 认证方式
- 4. 自定义 REST API 端点
- 5. 实际开发示例:构建一个前端文章提交表单
- 6. 常见问题与优化
- 7. 总结
WordPress 是世界上最流行的内容管理系统(CMS),其强大的灵活性和可扩展性使其成为开发者的首选,WordPress REST API 是 WordPress 提供的强大工具,允许开发者通过 HTTP 请求与 WordPress 数据进行交互,从而实现自定义功能、构建单页应用(SPA)或与其他系统集成,本文将详细介绍如何使用 WordPress REST API 开发自定义功能,涵盖基本概念、API 端点、认证方式以及实际开发示例。
WordPress REST API 简介
WordPress REST API 是一个基于 JSON 的接口,允许开发者通过 HTTP 请求(GET、POST、PUT、DELETE)与 WordPress 数据库交互,它提供了一系列标准化的 API 端点(Endpoints),用于访问和管理文章、页面、用户、评论等数据。
REST API 的主要特点
- 标准化:遵循 RESTful 架构,使用 JSON 格式传输数据。
- 可扩展:开发者可以自定义 API 端点,扩展 WordPress 功能。
- 跨平台兼容:可用于构建 Web、移动应用或与其他系统集成。
- 安全可控:支持多种认证方式,确保数据安全。
WordPress REST API 的基本使用
1 访问默认 API 端点
WordPress 默认提供了一些核心 API 端点,
/wp-json/wp/v2/posts
– 获取文章列表/wp-json/wp/v2/pages
– 获取页面列表/wp-json/wp/v2/users
– 获取用户列表/wp-json/wp/v2/comments
– 获取评论列表
示例:获取最新的 5 篇文章
GET /wp-json/wp/v2/posts?per_page=5
2 查询参数
WordPress REST API 支持多种查询参数,用于筛选和排序数据:
per_page
– 每页返回的数据量page
– 分页页码orderby
– 排序方式(如date
, )order
– 升序(asc
)或降序(desc
)search
– 关键词搜索
示例:搜索包含“WordPress”的文章
GET /wp-json/wp/v2/posts?search=WordPress
认证方式
默认情况下,部分 API 端点(如获取文章)是公开的,但创建、更新或删除数据需要认证,WordPress REST API 支持多种认证方式:
1 Cookie 认证(适用于 WordPress 登录用户)
适用于 WordPress 后台操作,前端 JavaScript 可使用 wp.apiFetch
进行认证请求。
2 OAuth 1.0a / OAuth 2.0
适用于第三方应用,需安装插件(如 Application Passwords 或 OAuth Server)。
3 JWT(JSON Web Token)
适用于移动应用或前后端分离架构,需安装 JWT Authentication 插件。
示例:使用 Application Passwords 认证
- 在 WordPress 后台 用户 → 编辑用户 → 生成 Application Password。
- 在 API 请求头中添加:
Authorization: Basic base64_encode(username:application_password)
自定义 REST API 端点
WordPress 允许开发者注册自定义 API 端点,以扩展功能。
1 注册自定义路由
在主题的 functions.php
或自定义插件中添加:
add_action('rest_api_init', function () { register_rest_route('custom/v1', '/latest-posts/', array( 'methods' => 'GET', 'callback' => 'get_latest_posts', )); }); function get_latest_posts() { $posts = get_posts(array('numberposts' => 5)); return $posts; }
访问方式:
GET /wp-json/custom/v1/latest-posts
2 处理 POST 请求
register_rest_route('custom/v1', '/submit-data/', array( 'methods' => 'POST', 'callback' => 'handle_submit_data', 'permission_callback' => function () { return current_user_can('edit_posts'); } )); function handle_submit_data(WP_REST_Request $request) { $data = $request->get_json_params(); // 处理数据 return array('success' => true, 'data' => $data); }
实际开发示例:构建一个前端文章提交表单
1 前端 HTML + JavaScript
<form id="post-submit-form"> <input type="text" id="post-title" placeholder="标题" required> <textarea id="post-content" placeholder="内容" required></textarea> <button type="submit">提交</button> </form> <script> document.getElementById('post-submit-form').addEventListener('submit', async (e) => { e.preventDefault(); const title = document.getElementById('post-title').value; const content = document.getElementById('post-content').value; const response = await fetch('/wp-json/wp/v2/posts', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + btoa('username:application_password') }, body: JSON.stringify({ title: title, content: content, status: 'publish' }) }); const result = await response.json(); alert('文章已发布!ID: ' + result.id); }); </script>
2 后端处理
确保 WordPress 已启用 REST API 并配置认证方式。
常见问题与优化
1 性能优化
- 使用
_fields
参数减少返回数据量:GET /wp-json/wp/v2/posts?_fields=id,title,excerpt
- 缓存 API 响应(使用
transient
或 Redis)。
2 安全性
- 使用
permission_callback
限制访问权限。 - 对输入数据进行验证和清理。
3 调试工具
- Postman – 测试 API 请求。
- WP REST API Log 插件 – 记录 API 请求日志。
WordPress REST API 为开发者提供了强大的扩展能力,可以用于:
- 构建自定义前端应用(如 React/Vue 单页应用)。
- 与其他系统(如 CRM、移动 App)集成,管理(批量发布、更新数据)。
通过本文的学习,你应该已经掌握了 WordPress REST API 的基本使用、认证方式、自定义端点的开发方法,以及如何优化 API 性能,你可以尝试开发自己的 WordPress 插件或主题,利用 REST API 实现更高级的功能!