目录
一、判断WP是否开启REST API(3种方法,优先第一种)
注意:WP 4.7+ 原生自带REST API,默认开启;不是插件,不需要安装。大多访问失败是伪静态/安全插件拦截,不是没开通
方法1:浏览器直接访问(最简单)
地址:https://你的域名/wp-json/wp/v2
✅ 成功:页面输出一大段JSON,代表API正常
❌ 失败:404/403/无法访问 → 被拦截,不是API没装
测试文章列表:
https://你的域名/wp-json/wp/v2/posts
能返回文章json=正常
方法2:WP后台 网站健康检查
- 后台 → 工具 → 网站健康
- 查看【REST API】项目
- 提示“REST API可用”=正常
- 提示错误:就是接口访问异常(伪静态、防火墙、安全插件拦截)
方法3:curl命令测试(服务器/本地终端)
curl https://你的域名/wp-json/wp/v2返回JSON即为正常
二、常见拦截原因 & 修复
- 伪静态没配置(最高发,Nginx/Apache)
- Apache:WP后台设置→固定链接,随便选一个非朴素结构,自动生成
.htaccess - Nginx:在站点配置增加WP伪静态规则,否则
/wp-json会404location / { try_files $uri $uri/ /index.php?$args; }
- 安全插件:Wordfence、iThemes Security、防火墙、CDN(Cloudflare)拦截
/wp-json路径 → 在插件里放行wp-json - wp-config 手动禁用代码:如果存在下面这行,删掉
define( 'REST_API_ENABLED', false );
三、REST API 基础操作(v2版本)
🔓 公开请求(GET,无需登录,读文章/分类)
| 接口 | 作用 |
|---|---|
| /wp-json/wp/v2/posts | 获取文章列表 |
| /wp-json/wp/v2/posts/{id} | 获取单篇文章 |
| /wp-json/wp/v2/categories | 分类列表 |
| /wp-json/wp/v2/media | 媒体库 |
示例curl拉文章:
curl [https://xxx.com/wp-json/wp/v2/posts](https://xxx.com/wp-json/wp/v2/posts)🔐 带认证请求(POST/ PUT/ DELETE,新建、修改、删除文章)
WP5.6+ 自带【应用密码 Application Passwords】,推荐用这个认证,不要用账号密码直接请求
生成应用密码
- WP后台 → 用户 → 个人资料
- 往下滑找到 应用密码
- 填写名称(例如python爬虫),点添加,复制生成密码(只显示一次!)
认证方式:Basic Auth
账号:你的WP用户名
密码:刚刚生成的应用密码
curl示例:新建一篇文章
curl --user "admin:xxxx xxxx xxxx xxxx" \
--header "Content-Type: application/json" \
--request POST \
--data '{
"title": "API创建的文章",
"content": "正文内容",
"status": "publish"
}' \
[https://xxx.com/wp-json/wp/v2/posts](https://xxx.com/wp-json/wp/v2/posts)Python requests 示例(你写Python爬虫会用到)
import requests
user = "admin"
app_pwd = "xxxx xxxx xxxx xxxx"
url = "[https://xxx.com/wp-json/wp/v2/posts](https://xxx.com/wp-json/wp/v2/posts)"
data = {
"title":"API文章",
"content":"内容",
"status":"draft"
}
resp = requests.post(url, auth=(user, app_pwd), json=data)
print(resp.json())四、常用排错清单
- 访问
/wp-json/wp/v2返回404 → 伪静态问题 - 返回401 Unauthorized → 账号/应用密码错误
- 返回403 Forbidden → 安全插件、服务器防火墙、CDN拦截wp-json路径
- 能GET但POST失败:权限不足,用户角色至少编辑者
五、关闭REST API(如果你需要)
不推荐,后台区块编辑器、很多插件依赖它。
可以用插件 Disable REST API,或者在主题functions.php添加代码限制。
你需要的话我可以直接给:Nginx完整WP伪静态配置,或者一段Python代码,一键测试WP REST API连通性。
评论 0
还没有评论,来抢沙发吧。