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

使用Python调用WordPress REST API发文章返回200而非201状态码

解决思路

1. 修复Basic Auth的编码错误

你当前的Authorization header直接拼接用户名和密码,不符合HTTP Basic Auth的规范。正确做法是将username:password字符串进行Base64编码后再传入,修改代码如下:

import requests
import base64

url = 'https://example.com/wp-json/wp/v2/posts'
username = 'UserNameHere'
password = 'MyPasswordHere'

# 对用户名密码进行Base64编码
auth_str = f"{username}:{password}"
auth_bytes = auth_str.encode('utf-8')
auth_base64 = base64.b64encode(auth_bytes).decode('utf-8')

headers = {'Authorization': f'Basic {auth_base64}'}
headers['Content-Type'] = 'application/json'

post_data = {
    'title': 'My First Post',
    'content': 'This is my first python post!',
    'status': 'publish'
}

response = requests.post(url, headers=headers, json=post_data)

if response.status_code == 201:
    print(response.json())
else:
    print('Error:', response.status_code, response.json())

2. 验证用户角色权限

确保使用的WordPress账号拥有发布文章的权限(如编辑、作者或管理员角色)。若角色权限不足,REST API会拒绝创建请求,可能返回错误或降级为GET请求返回现有文章列表。

3. 检查URL与重定向问题

  • 确认API URL格式正确,避免末尾缺少斜杠导致服务器重定向(重定向可能将POST请求转为GET)。
  • 确保请求URL与网站实际地址一致,比如不要用HTTP地址请求强制HTTPS的站点。

4. 排查服务器端REST API设置

  • 确认WordPress的REST API功能已启用(默认开启,但部分主题或插件可能禁用)。
  • 检查安全插件(如Wordfence)是否拦截了REST API的POST请求,需在插件设置中允许该API路径的写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:33:34