什么是WordPress REST API?
WordPress REST API 是WordPress提供的一套標(biāo)準(zhǔn)化接口,允許開發(fā)者通過HTTP請求與網(wǎng)站內(nèi)容進(jìn)行交互。它支持JSON格式的數(shù)據(jù)傳輸,能夠?qū)崿F(xiàn)跨平臺、跨語言的數(shù)據(jù)調(diào)用,為移動應(yīng)用、第三方服務(wù)或前后端分離架構(gòu)提供核心支持。
如何配置WordPress REST API設(shè)置
1. 確保REST API已啟用
WordPress 4.7及以上版本默認(rèn)開啟REST API功能。可通過以下方式驗(yàn)證:
- 訪問
https://你的域名/wp-json/
- 若返回JSON格式的站點(diǎn)數(shù)據(jù),則說明API正常運(yùn)行
2. 基礎(chǔ)權(quán)限控制
方法一:通過插件管理 安裝插件如 “JWT Authentication for WP REST API” 或 “REST API Toolbox”,可便捷設(shè)置:
- API端點(diǎn)訪問權(quán)限
- 用戶角色權(quán)限分配
- 自定義字段暴露控制
方法二:代碼配置(functions.php)
// 限制特定用戶角色訪問API
add_filter('rest_authentication_errors', function($result) {
if (!current_user_can('edit_posts')) {
return new WP_Error('rest_forbidden', __('僅管理員可訪問API'), ['status' => 401]);
}
return $result;
});
3. 自定義端點(diǎn)與字段
通過 register_rest_route()
創(chuàng)建自定義API路由:
add_action('rest_api_init', function() {
register_rest_route('custom/v1', '/latest-posts', [
'methods' => 'GET',
'callback' => 'get_latest_posts',
]);
});
function get_latest_posts() {
$posts = get_posts(['numberposts' => 5]);
return array_map(function($post) {
return [
'title' => $post->post_title,
'excerpt' => wp_trim_words($post->post_content, 20)
];
}, $posts);
}
4. 安全加固建議
- 禁用JSONP:防止跨站請求偽造(CSRF)
add_filter('rest_jsonp_enabled', '__return_false');
- 啟用HTTPS:強(qiáng)制所有API請求通過SSL加密
- 限流控制:使用插件如 “Disable WP REST API” 限制請求頻率
常見問題解決方案
Q:API返回404錯誤?
- 檢查固定鏈接設(shè)置(需非”樸素”模式)
- 確認(rèn)服務(wù)器未屏蔽
/wp-json/
路徑
Q:如何隱藏敏感數(shù)據(jù)?
通過 rest_prepare_{post_type}
過濾器移除私有字段:
add_filter('rest_prepare_post', function($response) {
unset($response->data['author_meta']);
return $response;
});
結(jié)語
合理配置WordPress REST API能顯著提升網(wǎng)站擴(kuò)展性,但需平衡功能開放與安全性。建議結(jié)合業(yè)務(wù)需求逐步啟用功能,并通過監(jiān)控日志持續(xù)優(yōu)化API性能。