WP CLI高效管理WordPress多站点网络实用指南
多年来,WordPress 开发者精心打造并持续维护着 WP-CLI——一个专为 WordPress 操作设计的强大命令行界面。作为提升效率的利器,WP-CLI 尤其适用于管理 WordPress 多站点网络,这种网络允许在单一安装上运行多个独立站点。要充分发挥 WP-CLI 的潜力,必须熟悉 WordPress 的核心组件:管理界面、文件结构和数据库。若缺乏这些基础知识,WP-CLI 的使用效率和效果将大打折扣。尽管 WP-CLI 支持安装、更新、激活、停用和删除插件或主题等常规操作,但其功能远超 WordPress 管理仪表板,堪称高级网站管理的全能工具。在多站点网络中,始终存在一个主站点(网络站点)作为核心,其他站点(辅助站点)共享集中管理的插件和主题,由超级管理员统一监督,确保网络稳定运行。本文将深入解析如何利用 WP-CLI 高效管理 WordPress 多站点网络,并提供实用示例助您快速上手。
### 什么是 WP CLI,为什么要使用它?
WP-CLI 是一款通过命令行管理 WordPress 网站的强大工具。在多站点环境中,它能显著简化网络管理,实现批量操作并优化工作流程。其真正优势在于灵活性和可扩展性——您可轻松对整个网络或特定站点执行命令,还能借助 GitHub 和其他软件仓库中的 WP-CLI 扩展包增强功能。开发者常创建自定义 WP-CLI 命令,以简化重复性任务。例如,利用 WP-CLI 为主题和插件生成模板代码,可在开发过程中节省大量时间与精力。
### 开始之前
本文精选的命令均基于 WordPress 多站点开发者和管理员的使用频率,WP-CLI 功能广泛且灵活,不可能涵盖所有命令。为保持清晰实用,我们将聚焦简单可操作的示例,助您快速入门。由于 WP-CLI 基于 Unix 命令,部分命令可能找不到对应的 Unix 版本。关于 WP-CLI 的重要说明:其命令结构灵活多变,可通过多种方式实现相同结果。例如:
“`bash
wp user create johndoe johndoe@example.com –display_name=”John Doe” –nickname=”Johnny”
“`
或
“`bash
wp user create johndoe –display_name=”John Doe” johndoe@example.com –nickname=”Johnny”
“`
一旦命令和子命令明确,标志、参数和值的顺序不再重要。
### 运行 WP-CLI 命令的最佳实践
为避免潜在问题,请遵循以下最佳实践:
– 始终保留可用的备份,尤其是一些命令会永久修改网站。
– 尽可能使用暂存网站。
– 使用 `–dry-run` 标志在应用数据库变更前进行测试。
注:要高效使用 WP-CLI 管理多站点,请以超级管理员身份登录。本指南侧重插件命令,但原则同样适用于主题。此外,许多命令支持 `–yes` 标志,可跳过确认提示,简化重复性任务。
### WordPress 多站点管理的基本 WP-CLI 命令
多站点网络中的 WP-CLI 命令可针对不同层级操作:
– **全网范围**:适用于所有站点的命令,如停用所有插件:
“`bash
wp plugin deactivate –network –all
“`
– **主站点**:仅应用于主站点的命令,如列出所有插件:
“`bash
wp plugin list
“`
– **辅助站点**:针对单个站点的命令,如更新特定站点的插件:
“`bash
wp plugin update –url=mysite.example.com akismet
“`
为便于管理,我们将 WP-CLI 命令分为以下几部分:
– 基本命令
– 网络管理
– 用户管理
– 数据库管理
#### 基本命令
这些命令有助于排查故障和管理插件与主题。
##### 使用列表
WP-CLI 可轻松获取多站点环境中的插件列表:
“`bash
wp plugin list –network
“`
输出:显示所有网络插件,包括名称、状态、更新和版本等。
按状态过滤插件:
“`bash
wp plugin list –network –status=active
“`
输出:整个网络的活动插件表。
从主站点获取插件列表:
“`bash
wp plugin list
“`
输出:主站点的插件列表。
获取单个站点的活动插件列表:
“`bash
wp plugin list –url=blog.example.com –status=active
“`
输出:网站 blog.example.com 的活动插件表。
可用过滤器:`inactive`(未激活插件)、`active-network`(网络激活插件)、`must-use`(自动加载插件)。
##### 停用插件
排除故障或准备更新时,常需停用插件:
“`bash
wp plugin deactivate –network –all
“`
输出:停用网络所有插件。
停用单个站点的特定插件:
“`bash
wp plugin deactivate akismet hello-dolly –url=blog.example.com
“`
输出:停用 blog.example.com 的 akismet 和 hello-dolly 插件。
##### 激活插件
激活全网或单个站点的插件:
“`bash
wp plugin activate –network –all
“`
输出:激活网络所有插件。
激活单个站点的特定插件:
“`bash
wp plugin activate akismet hello-dolly –url=blog.example.com
“`
输出:激活 blog.example.com 的 akismet 和 hello-dolly 插件。
##### 安装插件
WP-CLI 可快速安装插件,安装后可激活:
“`bash
wp plugin install akismet
“`
输出:插件 akismet 已安装并激活。
##### 更新插件
更新全网或单个站点的插件:
“`bash
wp plugin update –network –all
“`
输出:更新网络所有插件。
更新特定插件:
“`bash
wp plugin update –url=blog.example.com hello-dolly
“`
输出:更新 blog.example.com 的 hello-dolly 插件。
##### 删除插件
删除单个站点或多站点的插件:
“`bash
wp plugin delete bbpress
“`
输出:删除 bbpress 插件。
删除特定站点的插件:
“`bash
wp plugin delete –url=blog.example.com bbpress
“`
输出:删除 blog.example.com 的 bbpress 插件。
#### 网络管理
管理多站点网络中的站点至关重要。常用命令包括创建、管理、删除站点及缓存操作。
##### 创建网站
通过指定唯一标签创建新网站:
“`bash
wp site create –slug=blog
“`
输出:创建 blog.example.com 或 example.com/blog 并自动激活。
高级命令可附加标志,如指定网站标题和管理员:
“`bash
wp site create –slug=blog –title=”Blog Site” –email=admin@blog.com
“`
输出:创建名为“Blog Site”的网站,管理员为 admin@blog.com。
##### 列出所有网站
检索显示网站 ID、URL、创建日期和更新日期的表格:
“`bash
wp site list
“`
输出:所有网站信息表。
仅获取 URL 列表:
“`bash
wp site list –field=url
“`
输出:每个网站的 URL 列表。
##### 清空和删除网站
注:清空命令删除所有内容,保留网站外壳。
清空主站点:
“`bash
wp site empty
“`
清空单个站点:
“`bash
wp site empty –url=blog.example.com
“`
输出:删除 blog.example.com 的所有内容。
清空所有网站:
“`bash
wp site list –field=url | xargs -n1 -I % wp site empty –url=% –yes
“`
按 ID 删除单个站点:
“`bash
wp site delete 5
“`
输出:删除 ID 为 5 的站点。
旁路确认删除多个站点:
“`bash
wp site delete 2 –yes
wp site delete 3 –yes
“`
输出:删除 ID 为 2 和 3 的站点。
##### 清除缓存
由于缓存类型多样,部分服务器提供专业插件支持(如 Kinsta)。Kinsta 系统中的每个 WordPress 网站会自动安装 Kinsta Must-Use 插件,清除所有缓存(网站、边缘、CDN 和 Redis):
“`bash
wp kinsta cache purge –all
“`
仅清除网站缓存:
“`bash
wp kinsta cache purge –site
“`
清除 CDN 缓存:
“`bash
wp kinsta cache purge –cdn
“`
清除对象缓存:
“`bash
wp cache purge
“`
#### 用户管理
WP-CLI 简化多站点环境中的用户管理,快速执行常见任务。
##### 列出用户
列出网络或特定站点的用户:
“`bash
wp user list –network
“`
输出:显示用户 ID、登录名、显示名等信息的表格。
列出主站点用户:
“`bash
wp user list
“`
列出特定站点用户:
“`bash
wp user list –blog_id=6
“`
输出:博客 ID 6 的用户表。
##### 创建用户
向主站点添加新用户:
“`bash
wp user create johndoe johndoe@example.com
“`
输出:显示成功信息及密码。
向特定站点添加用户并指定角色:
“`bash
wp user create –role=editor –url=blog.example.com
“`
输出:用户 janedoe 已作为“编辑器”添加到 blog.example.com。
添加用户帐户元:
“`bash
wp user create –display_name=”John Doe” –nickname=”Johnny”
“`
输出:用户 johndoe 已创建,显示名为 John Doe,昵称为 Johnny。
注:创建超级管理员需先添加为管理员,再提升角色。
##### 更新用户
快速更新用户信息,如角色或密码:
“`bash
wp user update –role=super-administrator johndoe janedoe adminuser
“`
输出:用户晋升为超级管理员。
重置或更改密码:
“`bash
wp user update –user_pass=securePassword2024 johndoe
“`
输出:johndoe 的密码已更新。
##### 菊花链命令(Daisy-chained)
组合多个操作,如同时更新密码和角色:
“`bash
wp user update –user_pass=”newPassword2024″ –role=editor johndoe
“`
输出:johndoe 的密码更新为 newPassword2024,角色更改为“编辑”。
##### 管理用户元数据
添加、检索或删除用户元数据:
“`bash
wp user meta get johndoe nickname
“`
输出:用户 johndoe 的 nickname 元键值。
添加用户元:
“`bash
wp user meta add johndoe display_name “Mr. John Doe”
“`
输出:设置用户 johndoe 的显示名称为 Mr. John Doe。
删除用户元:
“`bash
wp user meta delete johndoe display_name
“`
输出:删除用户 johndoe 的 display_name 元键。
##### 删除用户
从网络或特定站点删除用户:
“`bash
wp user delete –network johndoe
“`
输出:从网络删除用户 johndoe。
从特定站点删除用户:
“`bash
wp user delete –url=mysite.example.com johndoe
“`
输出:删除 mysite.example.com 的用户 johndoe。
#### 数据库管理
WP-CLI 提供强大数据库管理功能,替代 phpMyAdmin 等工具。
##### 导出数据库
将数据库导出为 SQL 文件:
“`bash
wp db export
“`
输出:在根目录创建 SQL 文件。
重新命名导出文件:
“`bash
wp eval ‘if ( rename( “unganglyfilename.sql”, “newfilename.sql” ) ) { echo “File renamed successfully.”; } else { echo “Failed to rename file.”; }’
“`
输出:文件重命名成功。
##### 下载数据库
使用 curl 命令下载 SQL 文件:
“`bash
curl example.com/network-db.sql -o ~/Downloads/network-db.sql
“`
输出:文件下载到本地 Downloads 目录。
##### 上传数据库
使用 scp 命令上传 SQL 文件:
“`bash
scp ~/Downloads/network-db.sql admin@example.com:/var/www/example.com/public_html
“`
输出:文件上传到 WordPress 安装根目录。
##### 导入数据库
导入前需重置数据表(注:重置将禁用网站,请在暂存网站操作):
“`bash
wp db reset
“`
输出:清空所有数据表。
导入数据库:
“`bash
wp db import network-db.sql
“`
输出:文件填充清空的数据表。
删除导入的 SQL 文件:
“`bash
rm network-db.sql
“`
### 实用范例
以下示例展示如何通过 WP-CLI 提升工作效率:
1. **同时安装激活插件并重新生成缩略图**:
“`bash
wp site list –field=url | xargs -n1 -I % sh -c ‘wp plugin install akismet bbpress –activate –url=% && wp media regenerate –url=%’
“`
输出:在所有网站上安装并激活 Akismet 和 BBPress,重新生成图片缩略图。
2. **为所有用户添加自定义元字段**:
“`bash
wp site list –field=url | xargs -n1 -I % sh -c ‘wp user list –fields=ID –url=% –format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} favorite_color “” –url=%’
“`
输出:为所有网站的所有用户添加 favorite_color 元字段。
注:需在 functions.php 或自定义插件中显示 favorite_color 字段。
3. **将单个网站转换为多站点**:
“`bash
wp core multisite-convert
“`
输出:单一网站转换为多站点网络。
转换前停用所有插件,转换后需配置 wp-config.php 中的网络 URL(子域或子目录),并检查 .htaccess 文件以更新 URL 重写规则。
### 小结
本指南深入解析了 WP-CLI 在管理 WordPress 多站点环境中的强大功能和灵活性,使其成为开发者和管理员追求效率与控制的必备工具。从处理插件、用户和数据库到执行高级操作(如转换网站类型),WP-CLI 可精确、快速地简化复杂任务,助力高效管理 WordPress 多站点网络。