杰瑞科技汇

WordPress如何用Python实现自动化?

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

WordPress如何用Python实现自动化?-图1
(图片来源网络,侵删)

核心原理:WordPress 的 API 接口

Python 无法直接操作 WordPress 的数据库或文件系统(除非你直接连接服务器,但这不推荐且危险),所有自动化操作都是通过 WordPress 提供的 API (Application Programming Interface) 来完成的。

主要有两种 API:

  1. REST API (现代、推荐)

    • 这是 WordPress 4.7 版本后内置的官方 API。
    • 它允许你通过标准的 HTTP 请求(GET, POST, PUT, DELETE)来读取、创建、更新和删除网站上的内容(文章、页面、分类、标签、用户、媒体文件等)。
    • 所有数据都以 JSON 格式传输,非常易于 Python 处理。
    • 端点: https://你的域名/wp-json/wp/v2/
  2. XML-RPC (较老,但仍有支持)

    WordPress如何用Python实现自动化?-图2
    (图片来源网络,侵删)
    • 这是一个更早期的远程过程调用协议。
    • WordPress 对它的支持非常好,很多老插件和工具仍在使用。
    • 它同样可以完成大部分 CRUD 操作。
    • 端点: https://你的域名/xmlrpc.php

对于新项目,强烈推荐使用 REST API


必备的 Python 库

要实现自动化,你只需要一个核心库:requests

  • requests: Python 的“事实标准”HTTP 库,用于发送所有类型的 HTTP 请求,你的 Python 脚本将通过它来“调用” WordPress 的 API。

安装它非常简单:

pip install requests

实战场景与代码示例

下面我们通过几个最常见的自动化场景,来学习如何用 Python 控制 WordPress。

WordPress如何用Python实现自动化?-图3
(图片来源网络,侵删)

场景 1:使用 REST API 自动发布一篇文章

这是最经典的应用,假设你想从某个数据源(如爬虫、API、Excel文件)获取内容,并自动发布到你的 WordPress 网站上。

前提准备:

  1. 确保你的 WordPress 主题和插件没有禁用 REST API。
  2. 你需要一个具有“发布文章”权限的用户名和密码,为了安全,不要用管理员账号,可以创建一个专门的“自动化”用户,并赋予“作者”或“编辑”角色。

步骤 1:获取身份验证信息 (Application Passwords) 为了安全地让 Python 访问你的 WordPress,最佳实践是使用 Application Passwords 插件。

  1. 在你的 WordPress 后台安装并启用 "Application Passwords" 插件。
  2. 转到 用户 > 个人资料,在最底部你会看到一个 "Application Passwords" 部分。
  3. 在 "新应用名称" 中输入一个你喜欢的名字,"Python Poster",然后点击 "添加新应用密码"。
  4. 系统会生成一个唯一的密码字符串。请立即复制并保存它,刷新页面后就看不到了,这个密码将用于 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}")

如何运行?

  1. 将代码中的 WP_URL, WP_USERNAME, WP_APPLICATION_PASSWORD 替换成你自己的信息。
  2. 确保你文章的分类ID是正确的,你可以在WordPress后台的“文章 > 分类”中查看每个分类的ID。
  3. 保存为 .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

  1. 打开 crontab 编辑器:

    crontab -e
  2. 添加一行规则来定义任务。每天早上 8 点 自动运行脚本:

    0 8 * * * /usr/bin/python3 /home/user/scripts/auto_post.py >> /home/user/scripts/auto_post.log 2>&1
    • 0 8 * * *: cron 表达式,代表每天 8:00。
    • /usr/bin/python3: 你系统中 Python 解释器的绝对路径,可以用 which python3 查找。
    • >> /home/user/scripts/auto_post.log 2>&1非常重要! 这会将脚本的标准输出和错误信息都重定向到 auto_post.log 文件中,方便你排查问题。
  3. 保存并退出,cron 会自动加载这个新任务。

对于 Windows 用户,可以使用“任务计划程序”(Task Scheduler) 来实现类似的功能。


其他自动化可能性

除了发布文章,Python 还可以自动化 WordPress 的许多其他方面:

  • 媒体文件管理: 自动上传图片、视频等,使用 requests.post 并设置 files 参数。
  • 用户管理: 批量创建用户、修改用户信息。
  • 评论管理: 自动审核、删除垃圾评论。
  • 内容抓取与聚合: 从多个网站抓取RSS feed或内容,并整合发布到你的网站(需注意版权问题)。
  • 网站监控: 定期检查网站是否在线,或者检查新评论、新订单等。
  • SEO 优化: 自动为文章生成和设置 SEO 描述、关键词等(如果安装了相应的SEO插件,如 Yoast SEO 或 Rank Math,它们通常也提供API)。
步骤 关键点
理解原理 Python 通过 HTTP 请求调用 WordPress 的 REST APIXML-RPC 来通信。
准备工作 安装 requests 库,在 WordPress 后台安装 Application Passwords 插件并获取密钥。
编写脚本 使用 requests 库的 get, post, put, delete 等方法与 API 交互,使用 auth 参数进行身份验证。
实现场景 根据需求构造请求数据(JSON格式),并处理API返回的结果。
定时执行 使用 Linux 的 cron 或 Windows 的“任务计划程序”来定时运行脚本,实现真正的自动化。

掌握了 WordPress REST API 和 Python requests 库,你就拥有了一把强大的瑞士军刀,能够将许多重复、繁琐的网站运营工作自动化,从而解放你的时间和精力。

分享:
扫描分享到社交APP
上一篇
下一篇