WordPress提供了XML-RPC接口,可以通过Python直接推送文章并发布。以下是具体实现方法和注意事项:
一、使用 python-wordpress-xmlrpc
库
这是最常用的Python库,封装了WordPress的XML-RPC接口操作:
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import NewPost
# 配置WordPress站点信息
wp_url = 'https://你的站点/xmlrpc.php' # 接口地址
wp_username = '管理员账号'
wp_password = '管理员密码'
# 创建客户端连接
client = Client(wp_url, wp_username, wp_password)
# 创建文章对象
post = WordPressPost()
post.title = '测试文章标题'
post.content = '文章正文内容(支持HTML标签)'
post.post_status = 'publish' # 直接发布,若为草稿用'draft'
# 推送文章
post_id = client.call(NewPost(post))
print(f"文章已发布,ID:{post_id}")
- 核心功能:支持标题、正文、标签、分类、缩略图等属性的配置。
二、接口配置注意事项
- 启用XML-RPC
部分WordPress主题/插件会禁用XML-RPC,需检查: - 访问
https://你的站点/xmlrpc.php
,若显示"XML-RPC server accepts POST requests only"表示接口可用。 -
若被禁用,可通过插件(如 "XML-RPC Enable")或修改
.htaccess
文件启用。 -
身份验证
需使用具有编辑文章权限的账号,建议单独创建应用密码(若启用两步验证)。
三、扩展功能实现
- 添加分类和标签
post.terms_names = {
'category': ['技术文档', 'Python'],
'post_tag': ['自动化', 'WordPress']
}
- 设置自定义字段
post.custom_fields = []
post.custom_fields.append({
'key': 'seo_keywords',
'value': 'Python, WordPress'
})
- 上传并插入图片
from wordpress_xmlrpc.methods.media import UploadFile
with open('image.jpg', 'rb') as img:
data = {
'name': 'header.jpg',
'type': 'image/jpeg', # 根据实际类型修改
'bits': img.read(),
'overwrite': True
}
response = client.call(UploadFile(data))
post.thumbnail = response['id'] # 设置为文章特色图像
四、替代方案对比
方法 | 优点 | 缺点 |
---|---|---|
XML-RPC接口 | 官方支持,功能全面 | 需处理身份验证和接口可用性 |
REST API (v2) | 更现代,支持OAuth验证 | 需安装插件(如JWT Authentication) |
直接操作数据库 | 绕过权限限制,适合批量处理 | 风险高,需服务器权限 |
五、完整流程示例(含错误处理)
from wordpress_xmlrpc.exceptions import ServerConnectionError
try:
client = Client(wp_url, wp_username, wp_password)
post = WordPressPost()
# ...(配置文章属性)
post_id = client.call(NewPost(post))
except ServerConnectionError as e:
print(f"连接失败:{e}")
except Exception as e:
print(f"推送失败:{e}")
else:
print(f"成功发布文章,ID:{post_id}")
六、安全建议
- 使用HTTPS加密传输
- 限制API账号的权限(仅允许发布文章)
- 敏感信息(如密码)存储到环境变量,避免硬编码
通过上述方法,可高效实现Python自动化发布WordPress文章。若需处理Markdown内容,可结合markdown2
库先转换格式。