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
“`

WP CLI高效管理WordPress多站点网络实用指南

输出:删除 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 多站点网络。

文章网址:https://www.wpbull.com/jiqiao/17201.html