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}")
  • 核心功能:支持标题、正文、标签、分类、缩略图等属性的配置。

二、接口配置注意事项

  1. 启用XML-RPC
    部分WordPress主题/插件会禁用XML-RPC,需检查:
  2. 访问 https://你的站点/xmlrpc.php,若显示"XML-RPC server accepts POST requests only"表示接口可用。
  3. 若被禁用,可通过插件(如 "XML-RPC Enable")或修改.htaccess文件启用。

  4. 身份验证
    需使用具有编辑文章权限的账号,建议单独创建应用密码(若启用两步验证)。


三、扩展功能实现

  1. 添加分类和标签
post.terms_names = {
    'category': ['技术文档', 'Python'],
    'post_tag': ['自动化', 'WordPress']
}
  1. 设置自定义字段
post.custom_fields = []
post.custom_fields.append({
    'key': 'seo_keywords',
    'value': 'Python, WordPress'
})
  1. 上传并插入图片
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}")

六、安全建议

  1. 使用HTTPS加密传输
  2. 限制API账号的权限(仅允许发布文章)
  3. 敏感信息(如密码)存储到环境变量,避免硬编码

通过上述方法,可高效实现Python自动化发布WordPress文章。若需处理Markdown内容,可结合markdown2库先转换格式。