WordPress REST API发布文章失败:提示无创建权限求助
排查WordPress REST API创建文章401权限错误
核心排查点
1. 确认Basic Auth认证配置正确
WordPress应用密码必须通过Basic Authentication方式携带到请求头中,操作步骤:
- 将你的WordPress用户名和生成的应用密码拼接为
用户名:应用密码格式的字符串(注意保留应用密码里的空格,比如myuser:abc1 def2 ghi3 jkl4) - 对该字符串进行Base64编码(Postman可直接在请求头的Authorization选项中选择Basic Auth,输入用户名和应用密码,自动生成编码后的头)
- 确保请求头包含:
Authorization: Basic [Base64编码后的字符串] Content-Type: application/json
2. 验证用户角色的实际权限
- 修改用户角色后,需退出并重新登录WordPress后台,确认该用户角色确实拥有创建文章的权限:
- 创作者(Author):默认拥有创建草稿文章的权限
- 编辑者(Editor):默认拥有创建、发布文章的权限
- 若为多站点环境,需确保该用户是当前站点的成员,而非仅网络管理员(网络管理员默认不自动拥有单站点的文章操作权限)
3. 排查插件/主题的干扰
- 临时禁用所有插件,切换到WordPress默认主题(如Twenty Twenty-Four),重新测试请求,确认是否有插件(如安全插件、REST API限制插件)修改了权限规则
- 检查主题的
functions.php文件,是否有自定义代码修改了REST API的权限回调(比如add_filter('rest_posts_collection_params', ...)或类似钩子)
4. 确认请求端点和格式正确
- 确保请求端点为
https://domain.name/wp-json/wp/v2/posts(末尾斜杠不影响,但建议保持规范) - 请求体需为标准JSON格式,且Postman中已选择
raw -> JSON类型(自动添加Content-Type: application/json头)
你的请求体格式是正确的:
{ "status": "draft", "title": "TEST", "content": "TEST CONTENT" }
5. 检查SSL与代理设置
- 若站点启用HTTPS,确认Postman的
Settings -> General中SSL certificate verification为开启状态,否则可能导致认证头被丢弃 - 若使用代理,确保代理服务器正确传递
Authorization请求头
错误返回参考
你收到的错误信息明确指向权限认证问题:
{ "code": "rest_cannot_create", "message": "Sorry, you are not allowed to create posts as this user.", "data": { "status": 401 } }
内容的提问来源于stack exchange,提问作者matisportowiec
相关产品推荐
相关产品推荐

