如何用 WordPress REST API 開發(fā)自定義功能?
本文目錄導(dǎo)讀:
- 1. WordPress REST API 簡介
- 2. WordPress REST API 的基本使用
- 3. 認(rèn)證方式
- 4. 自定義 REST API 端點(diǎn)
- 5. 實(shí)際開發(fā)示例:構(gòu)建一個(gè)前端文章提交表單
- 6. 常見問題與優(yōu)化
- 7. 總結(jié)
WordPress 是世界上最流行的內(nèi)容管理系統(tǒng)(CMS),其強(qiáng)大的靈活性和可擴(kuò)展性使其成為開發(fā)者的首選,WordPress REST API 是 WordPress 提供的強(qiáng)大工具,允許開發(fā)者通過 HTTP 請(qǐng)求與 WordPress 數(shù)據(jù)進(jìn)行交互,從而實(shí)現(xiàn)自定義功能、構(gòu)建單頁應(yīng)用(SPA)或與其他系統(tǒng)集成,本文將詳細(xì)介紹如何使用 WordPress REST API 開發(fā)自定義功能,涵蓋基本概念、API 端點(diǎn)、認(rèn)證方式以及實(shí)際開發(fā)示例。
WordPress REST API 簡介
WordPress REST API 是一個(gè)基于 JSON 的接口,允許開發(fā)者通過 HTTP 請(qǐng)求(GET、POST、PUT、DELETE)與 WordPress 數(shù)據(jù)庫交互,它提供了一系列標(biāo)準(zhǔn)化的 API 端點(diǎn)(Endpoints),用于訪問和管理文章、頁面、用戶、評(píng)論等數(shù)據(jù)。
REST API 的主要特點(diǎn)
- 標(biāo)準(zhǔn)化:遵循 RESTful 架構(gòu),使用 JSON 格式傳輸數(shù)據(jù)。
- 可擴(kuò)展:開發(fā)者可以自定義 API 端點(diǎn),擴(kuò)展 WordPress 功能。
- 跨平臺(tái)兼容:可用于構(gòu)建 Web、移動(dòng)應(yīng)用或與其他系統(tǒng)集成。
- 安全可控:支持多種認(rèn)證方式,確保數(shù)據(jù)安全。
WordPress REST API 的基本使用
1 訪問默認(rèn) API 端點(diǎn)
WordPress 默認(rèn)提供了一些核心 API 端點(diǎn),
/wp-json/wp/v2/posts
– 獲取文章列表/wp-json/wp/v2/pages
– 獲取頁面列表/wp-json/wp/v2/users
– 獲取用戶列表/wp-json/wp/v2/comments
– 獲取評(píng)論列表
示例:獲取最新的 5 篇文章
GET /wp-json/wp/v2/posts?per_page=5
2 查詢參數(shù)
WordPress REST API 支持多種查詢參數(shù),用于篩選和排序數(shù)據(jù):
per_page
– 每頁返回的數(shù)據(jù)量page
– 分頁頁碼orderby
– 排序方式(如date
, )order
– 升序(asc
)或降序(desc
)search
– 關(guān)鍵詞搜索
示例:搜索包含“WordPress”的文章
GET /wp-json/wp/v2/posts?search=WordPress
認(rèn)證方式
默認(rèn)情況下,部分 API 端點(diǎn)(如獲取文章)是公開的,但創(chuàng)建、更新或刪除數(shù)據(jù)需要認(rèn)證,WordPress REST API 支持多種認(rèn)證方式:
1 Cookie 認(rèn)證(適用于 WordPress 登錄用戶)
適用于 WordPress 后臺(tái)操作,前端 JavaScript 可使用 wp.apiFetch
進(jìn)行認(rèn)證請(qǐng)求。
2 OAuth 1.0a / OAuth 2.0
適用于第三方應(yīng)用,需安裝插件(如 Application Passwords 或 OAuth Server)。
3 JWT(JSON Web Token)
適用于移動(dòng)應(yīng)用或前后端分離架構(gòu),需安裝 JWT Authentication 插件。
示例:使用 Application Passwords 認(rèn)證
- 在 WordPress 后臺(tái) 用戶 → 編輯用戶 → 生成 Application Password。
- 在 API 請(qǐng)求頭中添加:
Authorization: Basic base64_encode(username:application_password)
自定義 REST API 端點(diǎn)
WordPress 允許開發(fā)者注冊(cè)自定義 API 端點(diǎn),以擴(kuò)展功能。
1 注冊(cè)自定義路由
在主題的 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 請(qǐng)求
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(); // 處理數(shù)據(jù) return array('success' => true, 'data' => $data); }
實(shí)際開發(fā)示例:構(gòu)建一個(gè)前端文章提交表單
1 前端 HTML + JavaScript
<form id="post-submit-form"> <input type="text" id="post-title" placeholder="標(biāo)題" required> <textarea id="post-content" placeholder="內(nèi)容" 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('文章已發(fā)布!ID: ' + result.id); }); </script>
2 后端處理
確保 WordPress 已啟用 REST API 并配置認(rèn)證方式。
常見問題與優(yōu)化
1 性能優(yōu)化
- 使用
_fields
參數(shù)減少返回?cái)?shù)據(jù)量:GET /wp-json/wp/v2/posts?_fields=id,title,excerpt
- 緩存 API 響應(yīng)(使用
transient
或 Redis)。
2 安全性
- 使用
permission_callback
限制訪問權(quán)限。 - 對(duì)輸入數(shù)據(jù)進(jìn)行驗(yàn)證和清理。
3 調(diào)試工具
- Postman – 測試 API 請(qǐng)求。
- WP REST API Log 插件 – 記錄 API 請(qǐng)求日志。
WordPress REST API 為開發(fā)者提供了強(qiáng)大的擴(kuò)展能力,可以用于:
- 構(gòu)建自定義前端應(yīng)用(如 React/Vue 單頁應(yīng)用)。
- 與其他系統(tǒng)(如 CRM、移動(dòng) App)集成,管理(批量發(fā)布、更新數(shù)據(jù))。
通過本文的學(xué)習(xí),你應(yīng)該已經(jīng)掌握了 WordPress REST API 的基本使用、認(rèn)證方式、自定義端點(diǎn)的開發(fā)方法,以及如何優(yōu)化 API 性能,你可以嘗試開發(fā)自己的 WordPress 插件或主題,利用 REST API 實(shí)現(xiàn)更高級(jí)的功能!