标签: python

  • 实例说明如何通过Python来连接管理WordPress

    实例说明如何通过Python来连接管理WordPress

    WordPress已经成为最常用的内容管理系统(CMS),这在很大程度上是由于它的应用编程接口(API)。WordPress的REST API使WordPress能够与其他用各种语言编写的应用程序 “对话”–包括Python。

    Python是一种可扩展的编程语言,具有多种用途和人类可读的语法,使它成为远程管理WordPress内容的强大工具。

    下面是一些WordPress REST API对你的应用程序的用例,以及你如何使用Python来支持它们。

    • 使用预定义模板,使你的应用程序能够快速地将原始数据转化为带有解释的格式化文章。
    • 在Django和Python上建立一个后台应用程序,在每次特定对象的折扣或销售事件发生时向你的客户显示限时优惠。
    • 整合Python脚本,在你的WordPress网站内运行

    本教程将帮助你创建一个简单的Python控制台应用程序,与WordPress REST API进行通信并执行操作。完整的项目代码也是可用的。

    1. 安装和配置WordPress
    2. 如何从Python中控制WordPress
    3. 在代码中获取文章
    4. 用代码创建文章
    5. 更新代码中的文章
    6. 删除代码中的文章

    安装和配置WordPress

    首先,让我们在你的开发机器上本地安装和运行一个WordPress网站。这是开始使用WordPress的一个很好的方法,因为你不需要创建一个账户或购买一个虚拟主机的域名。

    在本地安装WordPress之前,需要在你的电脑上运行一些组件,包括Apache网络服务器、本地数据库和编写WordPress的PHP语言。

    幸运的是,我们可以使用DevKinsta,一个免费的本地WordPress开发套件,可用于所有主要的操作系统(你不需要成为Kinsta的客户来使用它)。

    DevKinsta可用于Windows、Mac和Linux,并在你的本地机器上安装WordPress和它的所有依赖项。

    在安装DevKinsta之前,你必须在本地运行Docker,所以如果你还没有下载并安装Docker引擎。

    安装Docker Desktop后,你可以自动下载适合你的操作系统的软件包。

    DevKinsta安装页面

    DevKinsta安装页面

    当你运行DevKinsta安装程序时,Docker立即开始初始化。

    DevKinsta的创建新网站菜单

    DevKinsta的创建新网站菜单

    现在,DevKinsta安装程序要求你创建WordPress管理账户的凭据。

    DevKinsta显示新WordPress网站表格

    DevKinsta显示新WordPress网站表格

    一旦安装,DevKinsta就是一个独立的应用程序。现在你可以同时访问WordPress网站(通过Open Site按钮)和WordPress管理仪表板(WP Admin按钮)。

    DevKinsta的网站信息面板

    DevKinsta的网站信息面板

    接下来,你需要为你的网站启用SSL和HTTPS。这可以通过SSL证书提高你网站的安全性。

    DevKinsta的 "SSL和HTTPS "选项

    DevKinsta的 “SSL和HTTPS “选项

    现在进入DevKinsta应用程序,点击Open site按钮。一个新的浏览器标签将显示你的WordPress网站的主页。

    WordPress主页

    WordPress主页

    这是你的WordPress博客,你可以在这里开始写作。但是为了使Python能够访问和使用WordPress REST API,我们必须首先配置WordPress Admin。

    现在点击DevKinsta应用程序上的WP Admin按钮,然后提供你的用户和密码以访问WordPress仪表板。

    WordPress登录表单

    WordPress登录表单

    一旦你登录了,你会看到WordPress仪表盘

    WordPress仪表板页面

    WordPress仪表板页面

    WordPress使用cookie认证作为它的标准方法。但是,如果你想用REST API来控制它,你必须用一种允许访问WordPress REST API的技术来认证。

    为此,你将使用应用密码。这些是WordPress生成的24个字符的长字符串,并与有权限管理你的网站的用户配置文件联系起来。

    要使用应用密码,请点击仪表板上的插件菜单,然后搜索同名的插件。然后安装并激活应用程序密码插件。

    WordPress的应用密码插件

    WordPress的应用密码插件

    要开始创建你的应用程序密码,首先要展开Users菜单,点击All Users

    扩展的用户菜单

    扩展的用户菜单

    现在,点击你的管理员用户名下面的编辑。

    WP-Admin WordPress界面

    WP-Admin WordPress界面

    向下滚动 “编辑用户 “页面,找到 “应用密码 “部分。在这里,为应用程序密码提供一个名称,以后你将用它来验证你的Python应用程序的请求和消费REST API。

    申请密码页

    申请密码页

    点击Add New Application Password,这样WordPress就可以为你生成一个随机的24个字符的密码。

    新的申请密码页面

    新的申请密码页面

    接下来,复制这个密码并将其保存在一个安全的地方,以便以后使用。记住,一旦你关闭这个页面,你将无法找回这个密码。

    最后,你必须配置permalinks。WordPress允许你为你的permalinks和archives创建一个自定义的URL结构。让我们改变它,使一个WordPress的文章标题,例如,”你的第一个WordPress网站”,可以通过直观的URL https://your-website.local:port/your-first-wordpress-website/。这种方法带来了一些好处,包括改善可用性和美观性。

    要配置固定链接,展开设置部分并点击固定链接菜单。在这里,将常用设置改为文章名称。

    固定链接设置

    使用Post name结构来设置固定链接结构也是必要的,因为它将允许我们在以后的Python代码中使用JSON格式来检索文章。否则,将抛出一个JSON解码错误。

    如何从Python中控制WordPress

    WordPress是用PHP编写的,但它有一个REST API,使其他编程语言、网站和应用程序能够消费其内容。在REST架构中暴露WordPress的内容,使其以JSON格式提供。因此,其他服务可以与WordPress集成,执行创建、读取、更新和删除(CRUD)操作,而不需要安装本地的WordPress。

    接下来,你将建立一个简单的Python应用程序,看看你如何使用WordPress REST API来创建、检索、更新和删除文章。

    为你的新的简单Python项目创建一个新的目录,并命名为 PythonWordPress之类的。

    ../PythonWordPress
    ../PythonWordPress
    ../PythonWordPress

    现在,你将为你的项目创建一个虚拟环境,让它保持一套独立的已安装的 Python 包,将它们与你的系统目录隔离,避免版本冲突。通过执行venv 命令来创建一个虚拟环境。

    python3 -m venv .venv
    python3 -m venv .venv
    python3 -m venv .venv

    现在,运行一个命令来激活.venv虚拟环境。这个命令因操作系统而异。

    • Windows: .venvScriptsactivate
    • Mac/Linux: .venv/bin/activate

    接下来,存储与你的WordPress帐户相关的配置。为了将应用程序的配置与你的Python代码分开,在你的项目目录下创建一个.env文件,并将这些环境变量添加到该文件中。

    WEBSITE_URL=“<>”
    API_USERNAME=“<>”
    API_PASSWORD=“<>”
    WEBSITE_URL=”<>”

    API_USERNAME=”<>”

    API_PASSWORD=”<>”

    WEBSITE_URL="<>"
    
    API_USERNAME="<>"
    
    API_PASSWORD="<>"

    幸运的是,从Python应用中读取上述数据很容易。你可以安装Python-dotenv包,这样你的应用程序就可以从.env文件中读取配置。

    pip install python-dotenv
    pip install python-dotenv
    pip install python-dotenv

    然后,安装 aiohttp,一个用于 Python 的异步 HTTP 客户端/服务器。

    pip install aiohttp
    pip install aiohttp
    pip install aiohttp

    现在添加一个名为app.py的文件,代码如下。

    import asyncio
    menu_options = {
    1: ‘List Posts’,
    2: ‘Retrieve a Post’
    }
    def print_menu():
    for key in menu_options.keys():
    print (key, ‘–‘, menu_options[key] )
    async def main():
    while(True):
    print_menu()
    option = input_number(‘Enter your choice: ‘)
    #Check what choice was entered and act accordingly
    if option == 1:
    print(‘Listing posts…’)
    elif option == 2:
    print(‘Retrieving a post…’)
    else:
    print(‘Invalid option. Please enter a number between 1 and 5.’)
    def input_number(prompt):
    while True:
    try:
    value = int(input(prompt))
    except ValueError:
    print(‘Wrong input. Please enter a number …’)
    continue
    if value < 0:
    print(“Sorry, your response must not be negative.”)
    else:
    break
    return value
    def input_text(prompt):
    while True:
    text = input(prompt)
    if len(text) == 0:
    print(“Text is required.”)
    continue
    else:
    break