使用WP REST API与Application Password创建文章时遇权限错误
解决WP REST API + Application Password创建文章的401权限错误
核心原因
返回的rest_cannot_create错误明确指向用户无创建文章的权限——即便使用了Application Password,也需要确保对应WordPress用户具备足够的文章操作权限。
具体解决步骤
检查用户角色权限
登录WordPress后台,找到生成凭证的用户veptuneapp:- 查看该用户的角色(如作者、编辑、管理员),订阅者等低权限角色默认无发布/创建文章权限;
- 若角色权限不足,可修改用户角色为「作者」及以上,或通过代码给对应角色添加权限(测试后可移除):
在主题functions.php中添加:function add_post_permissions_to_role() { $role = get_role('subscriber'); // 替换为目标角色 $role->add_cap('edit_posts'); $role->add_cap('publish_posts'); $role->add_cap('create_posts'); } add_action('init', 'add_post_permissions_to_role');
验证Application Password有效性
- 确认curl命令中的
APPLICATION_PASSWORD是完整复制的,无空格、换行或字符遗漏; - 重新生成新的Application Password替换原凭证,避免旧凭证因重置或过期失效。
- 确认curl命令中的
排查插件拦截
暂时禁用站点的安全插件(如Wordfence、iThemes Security)或缓存插件,测试是否是插件拦截了API请求;测试完成后再重新启用插件并调整对应规则。修正curl请求参数
确保请求的JSON格式正确,可显式指定文章状态(默认可能因权限限制无法使用publish,先尝试draft):curl --user "veptuneapp:NEW_APPLICATION_PASSWORD" -X POST \ -H "Content-Type: application/json" \ -i https://www.example.com/wp-json/wp/v2/posts \ -d '{"title": "foo bar", "content": "test", "status": "draft"}'
内容的提问来源于stack exchange,提问作者Jean François Manatane
相关产品推荐
相关产品推荐

