You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python调用WordPress REST API发文章异常:返回现有文章而非新建

问题排查与解决方案

可能的原因及对应修复步骤

1. URL重定向导致POST转为GET

WordPress的REST API端点若请求URL末尾无斜杠,服务器可能返回301/302重定向到带斜杠的版本,此时POST请求会被自动转为GET,进而返回所有文章列表。

修复:
在URL末尾添加斜杠:

url = "https://myurl.com/wp-json/wp/v2/posts/"

2. 应用密码关联用户权限不足

确保使用的WordPress用户账号拥有publish_posts权限,且应用密码正确关联到该用户。部分服务器配置下,权限不足可能导致请求静默降级为GET(虽更常见返回403,但需排除此情况)。

验证:
登录WordPress后台,检查用户角色(如编辑、管理员)是否具备发布文章权限,同时确认应用密码是在该用户的个人设置中生成的。

3. 请求Content-Type未显式声明

尽管requests.post的json参数会自动设置Content-Type: application/json,但部分特殊服务器配置可能需要显式声明该头部。

修复:
手动在请求头中添加Content-Type:

header = {
    'Authorization': 'Basic ' + token.decode('utf-8'),
    'Content-Type': 'application/json'
}

4. 代码拼写错误(不影响功能但建议修正)

代码中responce为拼写错误,正确应为response:

response = requests.post(url, headers=header, json=post)
print(response.json())

额外调试建议

  • 打印响应状态码和头部,确认是否发生重定向:
    print(response.status_code)
    print(response.headers)
    
    若状态码为301/302,说明确实发生重定向,可启用allow_redirects=False禁止自动重定向,再针对性排查URL问题。

内容的提问来源于stack exchange,提问作者Spotfire_new

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:50:25