WordPress REST API简介
WordPress REST API为开发者提供了一个强大的接口,允许通过HTTP请求与WordPress网站进行交互。这个API基于REST架构风格,支持JSON格式的数据交换,使得开发者能够轻松地从外部应用程序管理WordPress内容。
Python与WordPress API交互的优势
Python凭借其简洁的语法和丰富的库生态系统,成为与WordPress REST API交互的理想选择。通过Python脚本,您可以:
- 自动化内容发布和更新流程
- 批量导入或导出文章
- 管理用户和评论
- 与第三方服务集成
- 构建自定义的CMS工具
基本环境准备
在开始之前,您需要确保:
- WordPress网站已启用REST API(4.7及以上版本默认支持)
- 安装必要的Python库:
pip install requests python-dotenv
- 创建API认证凭据(可使用应用密码或JWT认证)
Python调用WordPress API示例
1. 获取文章列表
import requests
url = "https://your-wordpress-site.com/wp-json/wp/v2/posts"
response = requests.get(url)
if response.status_code == 200:
posts = response.json()
for post in posts:
print(post['title']['rendered'])
else:
print(f"Error: {response.status_code}")
2. 创建新文章
import requests
import json
url = "https://your-wordpress-site.com/wp-json/wp/v2/posts"
headers = {
'Authorization': 'Basic YOUR_AUTH_TOKEN',
'Content-Type': 'application/json'
}
data = {
'title': '我的Python发布测试',
'content': '这是通过Python脚本自动发布的内容',
'status': 'publish'
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
3. 更新现有文章
import requests
post_id = 123 # 替换为实际文章ID
url = f"https://your-wordpress-site.com/wp-json/wp/v2/posts/{post_id}"
headers = {
'Authorization': 'Basic YOUR_AUTH_TOKEN',
'Content-Type': 'application/json'
}
data = {
'content': '更新后的文章内容'
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
高级应用场景
批量处理文章
def batch_update_posts(category_id):
page = 1
while True:
params = {
'categories': category_id,
'per_page': 10,
'page': page
}
response = requests.get(url, params=params)
if not response.json():
break
for post in response.json():
update_data = {'categories': [category_id, 5]} # 添加新分类
update_response = requests.post(
f"{url}/{post['id']}",
headers=headers,
json=update_data
)
print(f"Updated post {post['id']}")
page += 1
媒体文件上传
def upload_media(file_path):
media_url = "https://your-wordpress-site.com/wp-json/wp/v2/media"
headers = {
'Authorization': 'Basic YOUR_AUTH_TOKEN',
'Content-Disposition': f'attachment; filename={os.path.basename(file_path)}'
}
with open(file_path, 'rb') as file:
response = requests.post(media_url, headers=headers, data=file)
return response.json()
安全最佳实践
- 永远不要将认证凭据直接写在代码中,使用环境变量或配置文件
- 限制API密钥的权限范围
- 使用HTTPS加密所有通信
- 实现适当的错误处理和重试机制
- 考虑使用OAuth进行更安全的认证
总结
通过Python与WordPress REST API的结合,开发者可以构建强大的内容管理自动化工具。无论是简单的文章发布还是复杂的批量操作,Python都能提供灵活高效的解决方案。随着对API更深入的了解,您可以开发出更符合特定需求的定制化工具,显著提高内容管理效率。
对于更复杂的应用,建议参考WordPress REST API官方文档,了解所有可用的端点和参数,以充分利用这一强大功能。