背景就是我用另外一个网站,我就想着在另外一个网站创作的文章也通过到WordPress站点中,因此就尝试让DeepSeek来给我写个python脚本。
我的输入如下:
写一个最简单的python脚本,根据wordpress提供的username、password,插入文章
DeepSeeK的思考:
嗯,用户让我写一个最简单的Python脚本,用WordPress提供的用户名和密码来插入文章。我需要先理清楚步骤。首先,应该用WordPress的REST API来操作,因为这是标准的方法。用户可能对API不太熟悉,所以需要简单明了。
首先,安装必要的库。常用的应该是requests,用来处理HTTP请求。用户可能没有安装,所以需要提醒他们用pip安装requests。然后,脚本的大体结构应该是认证,然后发送文章数据。
认证的话,WordPress的REST API通常使用应用密码,或者基本的HTTP认证。不过从WordPress 5.6开始,支持应用密码,所以可能需要生成一个应用密码,而不是用用户的登录密码。这点需要注意,可能用户不知道,需要说明。
但用户直接给了username和password,可能指的是基本认证?不过现在基本认证可能不安全,而且WordPress默认可能不支持。或者用户可能混淆了应用密码和普通密码。这里可能需要明确一下,让用户去生成应用密码。
不过为了简单,可能用户希望直接使用用户名和密码,所以可能需要使用OAuth或者应用密码。或者使用插件来启用基本认证。例如,安装插件如REST API Basic Auth,这样可以使用基本认证。但用户可能没有安装,这可能会让脚本无法运行。但用户要求最简单的,可能假设他们已经有这样的设置。
或者,可能用户希望使用应用密码。在WordPress后台,用户可以生成一个应用密码,然后脚本里使用用户名和应用密码进行基本认证。例如,用户名是admin,密码是生成的应用密码。这样,认证头可以用基本认证。
所以,步骤大概是:
1. 导入requests库。
2. 设置WordPress站点的URL、用户名、密码。
3. 构建文章数据,包括标题、内容、状态等。
4. 发送POST请求到/wp-json/wp/v2/posts端点,使用基本认证。
5. 检查响应是否成功。
然后,代码的结构应该如下:
import requests
url = 'https://example.com/wp-json/wp/v2/posts'
username = 'your_username'
password = 'your_application_password'
data = {
'title': 'Hello World',
'content': 'This is my first post created using Python.',
'status': 'publish'
}
response = requests.post(url, auth=(username, password), json=data)
if response.status_code == 201:
print('Post created successfully!')
else:
print('Error:', response.status_code, response.text)
但需要提醒用户替换URL、用户名和密码,并且确保应用密码已经生成。或者如果站点使用自签名证书,可能需要关闭SSL验证,但这样不安全,所以可能建议添加verify=True或者忽略,但默认情况下最好保持True。
另外,可能需要处理slug、分类等,但用户要最简单的,所以只包含必填字段。不过WordPress API中,标题和内容可能需要用特定的结构。例如,标题应该是'title'的字典,内容也是'content'的字典,比如:
data = {
'title': {'rendered': 'Hello World'},
'content': {'rendered': 'This is my first post...'},
}
不过根据文档,当使用REST API创建文章时,正确的字段是'title'和'content'的原始值,而不是'rendered'。例如:
正确的参数应为:
data = {
'title': 'Hello World',
'content': 'This is my first post...',
'status': 'publish'
}
但需要确认,可能我之前记错了。比如,WordPress REST API的创建文章端点,可能需要将标题和内容放在顶层字段,而不是嵌套的结构。例如,根据官方文档,POST请求的body参数中,title和content是字符串,分别对应文章的标题和内容。而状态设置为publish,否则可能默认是草稿。
所以正确的数据应该是:
data = {
'title': 'Hello World',
'content': 'This is my first post...',
'status': 'publish'
}
这样发送的话,应该能正确创建文章。
另外,需要确认认证方式是否正确。假设用户已经安装了Basic Auth插件,或者使用了应用密码,那么使用requests的auth参数传递用户名和密码是正确的。
测试响应状态码,成功创建的话,应该是201 Created。所以检查状态码是否为201,否则输出错误信息。
可能的错误点包括:认证失败,权限不足,URL错误,或者SSL证书问题。例如,如果网站使用自签名证书,可能需要设置verify=False,但会提示不安全警告。用户如果遇到这样的问题,可能需要处理,但脚本中暂时不处理,保持简单。
综上,给出这个脚本,并提醒用户需要安装requests库,使用应用密码,启用REST API认证,以及可能需要处理SSL的问题。另外,注意WordPress的固定链接设置可能需要正确,否则API端点可能不可用。
可能还需要处理其他错误情况,但用户要最简单的,所以只做基本的响应检查。
DeepSeek的最终输出:
以下是一个使用WordPress REST API创建文章的Python脚本示例,需要先安装requests
库:
pip install requests
脚本代码:
import requests
# 配置参数
WORDPRESS_URL = 'https://你的网站地址/wp-json/wp/v2/posts' # 替换为你的WordPress地址
USERNAME = '你的管理员用户名' # 替换为你的用户名
PASSWORD = '你的应用密码' # 替换为你的应用密码
# 文章数据
post_data = {
'title': '我的Python创建的文章',
'content': '这是通过Python脚本自动发布的文章内容',
'status': 'publish' # 直接发布,设为draft则是草稿
}
# 发送请求
response = requests.post(
WORDPRESS_URL,
auth=(USERNAME, PASSWORD),
json=post_data
)
# 检查结果
if response.status_code == 201:
print('文章创建成功!文章ID:', response.json()['id'])
else:
print('错误:', response.status_code)
print(response.text)
使用前需完成以下准备:
- 生成应用密码(在WordPress后台):
- 进入
用户 → 个人资料
- 在「应用密码」部分生成新密码(会得到类似
xxxx xxxx xxxx xxxx xxxx
的密码) - 脚本中的
PASSWORD
填写这串密码(不是你的登录密码)
- 启用REST API:
- 确保WordPress的固定链接设置不是「朴素」模式(建议选「文章名」)
- 如果遇到SSL证书错误:
- 临时解决方案(仅测试环境使用):
python response = requests.post(..., verify=False)
原理说明:
- 通过WordPress REST API的
/wp/v2/posts
端点创建文章 - 使用基本认证(Basic Auth)验证身份
- 请求体包含文章标题、内容和发布状态
- 返回201状态码表示创建成功
经过测试后完全能用,太强大了。
上述代码中username = ‘your_username’,这是我们wordpress的登录账号。关于如何获取应用密码:

密码名称在代码中是没啥用的,只是Wordpress后台的
一个记录而已。