Python 凭借其丰富的库和简洁的语法,非常适合用来与 WordPress 网站进行交互和自动化操作,我们将从核心原理、常用库、实战场景和完整代码示例四个方面来展开。

核心原理:WordPress 的 API 接口
Python 无法直接操作 WordPress 的数据库或文件系统(除非你直接连接服务器,但这不推荐且危险),所有自动化操作都是通过 WordPress 提供的 API (Application Programming Interface) 来完成的。
主要有两种 API:
-
REST API (现代、推荐)
- 这是 WordPress 4.7 版本后内置的官方 API。
- 它允许你通过标准的 HTTP 请求(GET, POST, PUT, DELETE)来读取、创建、更新和删除网站上的内容(文章、页面、分类、标签、用户、媒体文件等)。
- 所有数据都以 JSON 格式传输,非常易于 Python 处理。
- 端点:
https://你的域名/wp-json/wp/v2/
-
XML-RPC (较老,但仍有支持)
(图片来源网络,侵删)- 这是一个更早期的远程过程调用协议。
- WordPress 对它的支持非常好,很多老插件和工具仍在使用。
- 它同样可以完成大部分 CRUD 操作。
- 端点:
https://你的域名/xmlrpc.php
对于新项目,强烈推荐使用 REST API。
必备的 Python 库
要实现自动化,你只需要一个核心库:requests。
requests: Python 的“事实标准”HTTP 库,用于发送所有类型的 HTTP 请求,你的 Python 脚本将通过它来“调用” WordPress 的 API。
安装它非常简单:
pip install requests
实战场景与代码示例
下面我们通过几个最常见的自动化场景,来学习如何用 Python 控制 WordPress。

场景 1:使用 REST API 自动发布一篇文章
这是最经典的应用,假设你想从某个数据源(如爬虫、API、Excel文件)获取内容,并自动发布到你的 WordPress 网站上。
前提准备:
- 确保你的 WordPress 主题和插件没有禁用 REST API。
- 你需要一个具有“发布文章”权限的用户名和密码,为了安全,不要用管理员账号,可以创建一个专门的“自动化”用户,并赋予“作者”或“编辑”角色。
步骤 1:获取身份验证信息 (Application Passwords) 为了安全地让 Python 访问你的 WordPress,最佳实践是使用 Application Passwords 插件。
- 在你的 WordPress 后台安装并启用 "Application Passwords" 插件。
- 转到 用户 > 个人资料,在最底部你会看到一个 "Application Passwords" 部分。
- 在 "新应用名称" 中输入一个你喜欢的名字,"Python Poster",然后点击 "添加新应用密码"。
- 系统会生成一个唯一的密码字符串。请立即复制并保存它,刷新页面后就看不到了,这个密码将用于 Python 脚本。
步骤 2:编写 Python 脚本
import requests
import json
# --- 配置信息 ---
WP_URL = "https://你的域名.com" # 你的WordPress网站地址
WP_USERNAME = "你的自动化用户名" # 你创建的用于自动化的用户名
WP_APPLICATION_PASSWORD = "你刚刚生成的应用密码" # 复制的那串密码
# API 端点
POSTS_ENDPOINT = f"{WP_URL}/wp-json/wp/v2/posts"
# --- 要发布文章的数据 ---
# 'status' 可以是 'draft' (草稿), 'pending' (待审), 'publish' (发布)
new_post_data = {: '我的第一篇Python自动发布文章',
'content': '<p>这是由Python脚本通过WordPress REST API自动发布的内容,太神奇了!</p><p>我们可以在这里插入任何HTML标签。</p>',
'status': 'publish',
'categories': [1], # 分类ID,1 通常是“未分类”,你需要先知道你想要的分类ID。
'tags': ['python', '自动化', 'api'] # 标签名称
}
# --- 发送请求 ---
print("正在尝试发布文章...")
try:
# WordPress REST API 的 Basic Auth 认证方式
# 用户名是 "你的用户名",密码是 "你的应用密码"
response = requests.post(
POSTS_ENDPOINT,
json=new_post_data, # 使用json参数自动将字典转为JSON
auth=(WP_USERNAME, WP_APPLICATION_PASSWORD),
headers={'Content-Type': 'application/json'}
)
# 检查请求是否成功
response.raise_for_status() # 如果状态码不是2xx,则抛出异常
# 解析返回的JSON数据
created_post = response.json()
print(f"✅ 发布成功!")
print(f"文章ID: {created_post['id']}")
print(f"文章链接: {created_post['link']}")
except requests.exceptions.RequestException as e:
print(f"❌ 发布失败: {e}")
print(f"响应内容: {e.response.text}")
如何运行?
- 将代码中的
WP_URL,WP_USERNAME,WP_APPLICATION_PASSWORD替换成你自己的信息。 - 确保你文章的分类ID是正确的,你可以在WordPress后台的“文章 > 分类”中查看每个分类的ID。
- 保存为
.py文件(auto_post.py),然后在终端运行:python auto_post.py。
场景 2:从第三方 API 获取内容并发布
这个场景是场景1的延伸,非常实用,你想要每天自动发布一条“每日一句”或从天气API获取天气信息。
import requests
import json
import time # 用于时间戳
# --- 配置信息 (同上) ---
WP_URL = "https://你的域名.com"
WP_USERNAME = "你的自动化用户名"
WP_APPLICATION_PASSWORD = "你刚刚生成的应用密码"
POSTS_ENDPOINT = f"{WP_URL}/wp-json/wp/v2/posts"
# --- 从第三方API获取数据 ---
# 这里我们用一个免费的 "每日一句" API 作为例子
QUOTE_API_URL = "https://api.xygeng.cn/one"
print("正在获取每日一句...")
try:
quote_response = requests.get(QUOTE_API_URL)
quote_response.raise_for_status()
quote_data = quote_response.json()
quote_text = quote_data['data']['content']
quote_author = quote_data['data']['origin']
# --- 构建要发布的文章内容 ---
post_title = f"每日一句 - {time.strftime('%Y-%m-%d')}"
post_content = f'<blockquote><p>"{quote_text}"</p><footer>—— {quote_author}</footer></blockquote>'
new_post_data = {
'title': post_title,
'content': post_content,
'status': 'publish',
}
# --- 发布到WordPress ---
print("正在将每日一句发布到WordPress...")
wp_response = requests.post(
POSTS_ENDPOINT,
json=new_post_data,
auth=(WP_USERNAME, WP_APPLICATION_PASSWORD),
headers={'Content-Type': 'application/json'}
)
wp_response.raise_for_status()
created_post = wp_response.json()
print(f"✅ 发布成功!")
print(f"文章链接: {created_post['link']}")
except requests.exceptions.RequestException as e:
print(f"❌ 过程出错: {e}")
场景 3:定时任务 (Cron Job)
自动化最有价值的地方在于“定时执行”,在 Linux/macOS 系统中,你可以使用 cron 来定时运行你的 Python 脚本。
假设你的脚本路径是 /home/user/scripts/auto_post.py。
-
打开 crontab 编辑器:
crontab -e
-
添加一行规则来定义任务。每天早上 8 点 自动运行脚本:
0 8 * * * /usr/bin/python3 /home/user/scripts/auto_post.py >> /home/user/scripts/auto_post.log 2>&10 8 * * *: cron 表达式,代表每天 8:00。/usr/bin/python3: 你系统中 Python 解释器的绝对路径,可以用which python3查找。>> /home/user/scripts/auto_post.log 2>&1:非常重要! 这会将脚本的标准输出和错误信息都重定向到auto_post.log文件中,方便你排查问题。
-
保存并退出,cron 会自动加载这个新任务。
对于 Windows 用户,可以使用“任务计划程序”(Task Scheduler) 来实现类似的功能。
其他自动化可能性
除了发布文章,Python 还可以自动化 WordPress 的许多其他方面:
- 媒体文件管理: 自动上传图片、视频等,使用
requests.post并设置files参数。 - 用户管理: 批量创建用户、修改用户信息。
- 评论管理: 自动审核、删除垃圾评论。
- 内容抓取与聚合: 从多个网站抓取RSS feed或内容,并整合发布到你的网站(需注意版权问题)。
- 网站监控: 定期检查网站是否在线,或者检查新评论、新订单等。
- SEO 优化: 自动为文章生成和设置 SEO 描述、关键词等(如果安装了相应的SEO插件,如 Yoast SEO 或 Rank Math,它们通常也提供API)。
| 步骤 | 关键点 |
|---|---|
| 理解原理 | Python 通过 HTTP 请求调用 WordPress 的 REST API 或 XML-RPC 来通信。 |
| 准备工作 | 安装 requests 库,在 WordPress 后台安装 Application Passwords 插件并获取密钥。 |
| 编写脚本 | 使用 requests 库的 get, post, put, delete 等方法与 API 交互,使用 auth 参数进行身份验证。 |
| 实现场景 | 根据需求构造请求数据(JSON格式),并处理API返回的结果。 |
| 定时执行 | 使用 Linux 的 cron 或 Windows 的“任务计划程序”来定时运行脚本,实现真正的自动化。 |
掌握了 WordPress REST API 和 Python requests 库,你就拥有了一把强大的瑞士军刀,能够将许多重复、繁琐的网站运营工作自动化,从而解放你的时间和精力。
