如何使用WP CLI管理WordPress多站点

如何使用WP CLI管理WordPress多站点

多年来,WordPress 开发人员创建并维护了 WP-CLI — 一个专为 WordPress 操作而设计的强大命令行界面。作为一种省时工具,WP-CLI 尤其适合管理 WordPress 多站点网络,这种网络允许在一个 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 命令,你可能找不到与 WP-CLI 相对应的 Unix 命令

关于 WP-CLI 的重要说明

WP-CLI 的命令结构非常灵活,可以通过多种方式实现相同的结果。例如,以下两个例子都是有效的:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create johndoe johndoe@example.com --display_name="John Doe" --nickname="Johnny"
wp user create johndoe johndoe@example.com --display_name="John Doe" --nickname="Johnny"
wp user create johndoe johndoe@example.com --display_name="John Doe" --nickname="Johnny"

或:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create johndoe --display_name="John Doe" johndoe@example.com --nickname="Johnny"
wp user create johndoe --display_name="John Doe" johndoe@example.com --nickname="Johnny"
wp user create johndoe --display_name="John Doe" johndoe@example.com --nickname="Johnny"

一旦命令和子命令被说明,标志、参数和值的顺序就不重要了。

运行 WP-CLI 命令的最佳实践

请遵循以下最佳实践,以避免潜在问题:

  • 始终有可用的当前备份,尤其是其中一些命令会永久性地改变你的网站。
  • 尽可能使用暂存网站。
  • 使用 --dry-run 标志在应用数据库变更之前对其进行测试。

注:要跟上并有效使用 WP-CLI 管理 WordPress 多站点,请确保以超级管理员身份登录。虽然本指南侧重于插件命令,但同样的原则也适用于主题。此外,许多命令都支持 --yes 标志,允许你跳过确认提示并简化重复性任务。

WordPress 多站点管理的基本 WP-CLI 命令

多站点网络中的 WP-CLI 命令可以针对不同级别的操作:

全网范围:适用于网络中所有站点的命令。例如:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin deactivate --network --all
wp plugin deactivate --network --all
wp plugin deactivate --network --all

该命令会停用网络中每个站点的所有插件。

主站点:应用于多站点设置过程中创建的主站点的命令。例如

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin list
wp plugin list
wp plugin list

上述命令仅列出主站点上安装的所有插件。

辅助站点:以网络中的单个站点为目标的命令,由其 URL 指定。例如

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin update --url=mysite.example.com akismet
wp plugin update --url=mysite.example.com akismet
wp plugin update --url=mysite.example.com akismet

该命令更新网站mysite.example.com 上的 akismet 插件。

为了便于管理 Multisite 网络,我们将 WP-CLI 命令分为以下几部分:

  1. 基本命令
  2. 网络管理
  3. 用户管理
  4. 数据库管理

基本命令

这些基本命令有助于排除故障和管理整个网络的插件和主题。

使用列表

WP-CLI 可以轻松检索多站点环境中的插件和其他组件列表。

获取网络中所有插件的列表:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin list --network
wp plugin list --network
wp plugin list --network

输出:显示所有网络安装的插件,包括名称、状态、可用更新和版本等详细信息。

按状态(如激活)过滤插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin list --network --status=active
wp plugin list --network --status=active
wp plugin list --network --status=active

输出:整个网络的活动插件表。

从主站点获取插件列表:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin list
wp plugin list
wp plugin list

输出:主站点的插件列表。

获取单个站点的活动插件列表:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin list --url=<site-url> --status=active
wp plugin list --url=<site-url> --status=active
wp plugin list --url=<site-url> --status=active

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin list --url=blog.example.com --status=active
wp plugin list --url=blog.example.com --status=active
wp plugin list --url=blog.example.com --status=active

输出: 网站blog.example.com 的活动插件表。

除了用status=active 过滤插件外,还可以使用以下过滤器:

  • inactive:已安装但未激活的插件。
  • active-network:在整个网络中激活的插件。
  • must-use:自动加载的必须使用的插件。

停用插件

在排除故障或准备更新时,通常需要停用插件。WP-CLI 允许你停用整个网络或特定网站的插件。

停用整个网络的所有插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin deactivate --network --all
wp plugin deactivate --network --all
wp plugin deactivate --network --all

结果:停用网络中的所有插件。

停用单个网站的特定插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin deactivate akismet hello-dolly --url=blog.example.com
wp plugin deactivate akismet hello-dolly --url=blog.example.com
wp plugin deactivate akismet hello-dolly --url=blog.example.com

结果:网站 blog.example.com 的 akismet 和 hello-dolly 插件已停用。

激活插件

在多站点设置中,使用这些命令激活整个网络或单个站点的插件。

激活整个网络的所有插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin activate --network --all
wp plugin activate --network --all
wp plugin activate --network --all

结果:激活网络中的所有插件。

激活单个网站的特定插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin activate akismet hello-dolly --url=blog.example.com
wp plugin activate akismet hello-dolly --url=blog.example.com
wp plugin activate akismet hello-dolly --url=blog.example.com

结果:blog.example.com 网站的akismethello-dolly 插件已激活。

安装插件

使用 WP-CLI 安装插件快捷高效。安装完成后,可为单个网站或整个网络激活插件。

可使用以下命令为网络安装插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin install <plugin-slug>
wp plugin install <plugin-slug>
wp plugin install <plugin-slug>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin install akismet
wp plugin install akismet
wp plugin install akismet

结果:插件 akismet 已安装并可激活。

更新插件

使用这些命令更新整个网络或特定网站的插件。

更新整个网络的所有插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin update --network --all
wp plugin update --network --all
wp plugin update --network --all

结果:更新网络中的所有插件。

更新整个网络中的特定插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin update <plugin-slug-1> <plugin-slug-2> --network
wp plugin update <plugin-slug-1> <plugin-slug-2> --network
wp plugin update <plugin-slug-1> <plugin-slug-2> --network

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin update akismet jetpack bbpress --network
wp plugin update akismet jetpack bbpress --network
wp plugin update akismet jetpack bbpress --network

结果: 全网更新 akismetjetpackbbpress 插件。

更新单个网站的插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin update --url=<site-url> <plugin-slug>
wp plugin update --url=<site-url> <plugin-slug>
wp plugin update --url=<site-url> <plugin-slug>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin update --url=blog.example.com hello-dolly
wp plugin update --url=blog.example.com hello-dolly
wp plugin update --url=blog.example.com hello-dolly

结果:更新了blog.example.com 网站的 hello-dolly 插件。

删除插件

使用 WP-CLI 删除插件非常简单,无论是单个网站还是多站点网络。

从当前 WordPress 上下文(网络或站点)中删除插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin delete <plugin-slug>
wp plugin delete <plugin-slug>
wp plugin delete <plugin-slug>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin delete bbpress
wp plugin delete bbpress
wp plugin delete bbpress

结果:删除 bbpress 插件。

删除多站点中特定站点的插件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin delete <plugin-slug> --url=<site-url>
wp plugin delete <plugin-slug> --url=<site-url>
wp plugin delete <plugin-slug> --url=<site-url>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin delete bbpress --url=blog.example.com
wp plugin delete bbpress --url=blog.example.com
wp plugin delete bbpress --url=blog.example.com

结果: 删除 blog.example.com 网站上的 bbpress 插件。

网络管理

管理 WordPress 多站点网络中的站点是一项重要任务。以下是常用的 WP-CLI 命令,可帮助你高效地创建、管理和删除网站,以及处理缓存操作。

创建网站

使用 WP-CLI 向网络添加新网站非常简单。

基本命令:通过指定一个唯一的标签来创建一个新网站。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site create --slug=<site-name>
wp site create --slug=<site-name>
wp site create --slug=<site-name>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site create --slug=blog
wp site create --slug=blog
wp site create --slug=blog

结果:根据网络设置,创建一个新网站 blog.example.comexample.com/blog 并自动激活。

高级命令:也可以在命令中附加标志。在下面的示例中,添加的网站具有指定的网站标题和网站管理员。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>
wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>
wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site create --slug=blog --title="Blog Site" --email=admin@blog.com
wp site create --slug=blog --title="Blog Site" --email=admin@blog.com
wp site create --slug=blog --title="Blog Site" --email=admin@blog.com

结果: 创建名为“Blog Site”的网站,管理员为 admin@blog.com

列出所有网站: 检索显示网站 ID、URL、创建日期和最后更新日期的表格:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site list
wp site list
wp site list

您还可以调整网站列表,只获取网络中所有网站的 URL:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site list --field=url
wp site list --field=url
wp site list --field=url

输出:每个网站的 URL 列表。

清空和删除网站

注:清空命令将删除所有帖子、页面、链接和分类法,并保留网站外壳。

清空主站点:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site empty
wp site empty
wp site empty

输出:出现确认提示,删除主站点的所有内容。

清空单个网站(删除所有帖子、页面、链接和分类法):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site empty --url=<site-url>
wp site empty --url=<site-url>
wp site empty --url=<site-url>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site empty --url=blog.example.com
wp site empty --url=blog.example.com
wp site empty --url=blog.example.com

结果:删除 blog.example.com 中的所有内容,但网站保持不变。

清空网络中的所有网站:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes
wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes
wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes

结果:该命令会循环浏览所有 URL,然后清空每个站点的内容,无需为每个站点提供批准。

按 ID 删除单个网站:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site delete <site-id>
wp site delete <site-id>
wp site delete <site-id>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site delete 5
wp site delete 5
wp site delete 5

结果:ID 为 5 的站点已删除。

通过旁路确认删除多个站点:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site delete 2 --yes
wp site delete 3 --yes
wp site delete 2 --yes wp site delete 3 --yes
wp site delete 2 --yes
wp site delete 3 --yes

结果:ID 为 23 的站点被删除。--yes 标志有助于跳过提示。

清除缓存

由于许多缓存类型在这里以不同方式存储,部分服务器提供商还提供专业的插件支持,比如 Kinsta,使用 Kinsta Must-Use 插件。Kinsta 系统中的每个 WordPress 网站都会自动安装该插件。

这会清除所有缓存,包括网站缓存、边缘缓存、CDN 缓存和 Redis 缓存。

清除所有缓存(网站、边缘、CDN 和 Redis):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp kinsta cache purge --all
wp kinsta cache purge --all
wp kinsta cache purge --all

只清除网站缓存:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp kinsta cache purge --site
wp kinsta cache purge --site
wp kinsta cache purge --site

清除 CDN 缓存:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp kinsta cache purge --cdn
wp kinsta cache purge --cdn
wp kinsta cache purge --cdn

清除对象缓存:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp cache purge
wp cache purge
wp cache purge

用户管理

WP-CLI 简化了多站点环境中的用户管理,让你可以快速高效地执行任务。本节介绍常见的用户管理操作:

  1. 列出用户
  2. 创建用户
  3. 更新用户
  4. 管理用户元

列出用户

使用 WP-CLI 可以直接列出网络或特定网站中的用户。

列出网络中的所有用户:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user list --network
wp user list --network
wp user list --network

输出:显示每个用户或用户列表查询的用户 ID、登录名、显示名、用户名、注册日期和角色的表格。

列出主站点的用户:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user list
wp user list
wp user list

结果:显示主站点的用户表。

列出特定站点(辅助站点)的用户:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user list --blog_id=<id>
wp user list --url=<url>
wp user list --blog_id=<id> wp user list --url=<url>
wp user list --blog_id=<id>
wp user list --url=<url>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user list --blog_id=6
wp user list --blog_id=6
wp user list --blog_id=6

结果:显示带有博客 ID 6 的网站所有用户表。

创建用户

在多站点网络中,用户默认注册为网络用户。他们的角色取决于他们是添加到网站的第一个用户还是后续用户。用户名必须至少有四个字符。

向主站点添加新用户:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create <username> <email>
wp user create <username> <email>
wp user create <username> <email>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create johndoe johndoe@example.com
wp user create johndoe johndoe@example.com
wp user create johndoe johndoe@example.com

输出:显示成功信息,包括生成的密码。

向特定网站添加新用户,并指定其角色:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create <username> <email> --role=<role> --url=<url>
wp user create <username> <email> --role=<role> --url=<url>
wp user create <username> <email> --role=<role> --url=<url>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create janedoe janedoe@example.com --role=editor --url=blog.example.com
wp user create janedoe janedoe@example.com --role=editor --url=blog.example.com
wp user create janedoe janedoe@example.com --role=editor --url=blog.example.com

输出:用户 janedoe 已作为“编辑器”添加到站点 blog.example.com

在创建过程中添加用户帐户元:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create <username> <email> --display_name=<name> --nickname=<nickname>
wp user create <username> <email> --display_name=<name> --nickname=<nickname>
wp user create <username> <email> --display_name=<name> --nickname=<nickname>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user create johndoe johndoe@example.com --display_name="John Doe" --nickname="Johnny"
wp user create johndoe johndoe@example.com --display_name="John Doe" --nickname="Johnny"
wp user create johndoe johndoe@example.com --display_name="John Doe" --nickname="Johnny"

结果: 用户 johndoe 已创建,显示名为 John Doe,昵称为 Johnny

注:要创建超级管理员,首先将用户添加为管理员,然后将该用户角色提升为超级管理员。

更新用户

使用 WP-CLI 可以快速更新用户信息,如角色或密码。

更改(晋升或降级)用户角色:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user update <username|email|user_id> --role=<role>
wp user update <username|email|user_id> --role=<role>
wp user update <username|email|user_id> --role=<role>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user update johndoe janedoe adminuser --role=super-administrator
wp user update johndoe janedoe adminuser --role=super-administrator
wp user update johndoe janedoe adminuser --role=super-administrator

结果:用户johndoejanedoe 和 adminuser 晋升为超级管理员。

重置或更改用户密码:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user update <username> --user_pass=<new_password>
wp user update <username> --user_pass=<new_password>
wp user update <username> --user_pass=<new_password>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user update johndoe --user_pass=securePassword2024
wp user update johndoe --user_pass=securePassword2024
wp user update johndoe --user_pass=securePassword2024

结果:johndoe 的密码已更新。

菊花链命令(Daisy-chained):WP-CLI 允许你在单个命令中组合多个操作,从而节省编辑用户的时间。例如,你可以同时更新用户的密码和角色。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user update <user> --user_pass=<new_password> --role=<status>
wp user update <user> --user_pass=<new_password> --role=<status>
wp user update <user> --user_pass=<new_password> --role=<status>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user update johndoe --user_pass="newPassword2024" --role=editor
wp user update johndoe --user_pass="newPassword2024" --role=editor
wp user update johndoe --user_pass="newPassword2024" --role=editor

结果:用户 johndoe 的密码更新为 newPassword2024,角色更改为“编辑”。

管理用户元数据

通过用户元,可以添加、检索或删除用户账户的元数据。

获取用户元数据:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user meta get <username> <meta_key>
wp user meta get <username> <meta_key>
wp user meta get <username> <meta_key>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user meta get johndoe nickname
wp user meta get johndoe nickname
wp user meta get johndoe nickname

输出:显示用户johndoe 的 nickname 元键的值。

添加用户元:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user meta add <username> <meta_key> <meta_value>
wp user meta add <username> <meta_key> <meta_value>
wp user meta add <username> <meta_key> <meta_value>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user meta add johndoe display_name "Mr. John Doe"
wp user meta add johndoe display_name "Mr. John Doe"
wp user meta add johndoe display_name "Mr. John Doe"

结果:Mr. John Doe 被设置为用户johndoe 的显示名称。

删除用户元:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user meta delete <username> <meta_key>
wp user meta delete <username> <meta_key>
wp user meta delete <username> <meta_key>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user meta delete johndoe display_name
wp user meta delete johndoe display_name
wp user meta delete johndoe display_name

结果: 该命令将删除用户johndoe 的 display_name 元键。

删除用户

使用 WP-CLI 删除网络或特定网站中的用户非常有效。

从网络中删除用户:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user delete <username|user_id> --network
wp user delete <username|user_id> --network
wp user delete <username|user_id> --network

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user delete johndoe --network
wp user delete johndoe --network
wp user delete johndoe --network

结果:从网络中删除用户 johndoe

从特定网站删除用户:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user delete <username|user_id> --url=<site-url>
wp user delete <username|user_id> --url=<site-url>
wp user delete <username|user_id> --url=<site-url>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp user delete johndoe --url=mysite.example.com
wp user delete johndoe --url=mysite.example.com
wp user delete johndoe --url=mysite.example.com

结果: 从站点 mysite.example.com 删除用户 johndoe

数据库管理

WP-CLI 提供了一个强大的数据库管理工具,可以替代 phpMyAdmin 等工具。本节将介绍使用 WP-CLI 执行的常见数据库操作:

  1. 导出数据库
  2. 下载数据库
  3. 上传数据库
  4. 导入数据库

导出数据库

使用 WP-CLI 可以将数据库导出为 SQL 文件。导出的文件保存在 WordPress 安装的根目录中。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp db export
wp db export
wp db export

结果:在根目录下创建一个 SQL 文件。

如果导出文件的名称不雅,可以使用以下命令重新命名:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'

结果:文件 cilawaw...nPb--9545b3f.sql 更名为 network-db.sql

下载数据库

要将导出的数据库文件下载到本地计算机,请使用 curl 命令。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
curl <remote-url> -o <local-path>
curl <remote-url> -o <local-path>
curl <remote-url> -o <local-path>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
curl example.com/network-db.sql -o ~/Downloads/network-db.sql
curl example.com/network-db.sql -o ~/Downloads/network-db.sql
curl example.com/network-db.sql -o ~/Downloads/network-db.sql

结果:文件 network-db.sql 已下载到本地的 Downloads 目录。

上传数据库

您可以使用scp命令将数据库文件上传到 Multisite 安装的根目录。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
scp <local-path-to-file> <username>@<remote-server>:<remote-path>
scp <local-path-to-file> <username>@<remote-server>:<remote-path>
scp <local-path-to-file> <username>@<remote-server>:<remote-path>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
scp ~/Downloads/network-db.sql admin@example.com:/var/www/example.com/public_html
scp ~/Downloads/network-db.sql admin@example.com:/var/www/example.com/public_html
scp ~/Downloads/network-db.sql admin@example.com:/var/www/example.com/public_html

结果:验证后,文件 network-db.sql 将上传到 WordPress 安装的根目录。

导入数据库

在导入数据库之前,您可能需要重置现有的数据表。

注:重置数据库将禁用您的网站,因此请在暂存网站上执行此操作以避免中断。

重置数据表:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp db reset
wp db reset
wp db reset

结果:清空数据库中的所有数据表。

导入数据库:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp db import <file-name.sql>
wp db import <file-name.sql>
wp db import <file-name.sql>

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp db import network-db.sql
wp db import network-db.sql
wp db import network-db.sql

结果:文件 network-db.sql 将填充清空的数据表。

删除导入的 SQL 文件:为安全起见,请在导入后删除 SQL 文件:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm <file-name.sql>
rm <file-name.sql>
rm <file-name.sql>

实用范例

我们可以想到很多命令来加快和简化您的工作流程。下面是三个例子。 虽然其中一些命令较为复杂,但它们都是在较简单的命令基础上执行有用的操作。

同时安装和激活插件并重新生成缩略图。

该命令循环浏览网络中的所有网站,安装并激活两个插件,并为每个网站重新生成图像缩略图。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'

结果:在所有网站上安装并激活 AkismetBBPress 插件,并重新生成图片缩略图。

为所有用户添加自定义元字段

此命令循环浏览所有网站,检索用户列表,并为每个用户添加自定义元字段。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 {} <meta-key> <meta-value> --url=%'
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 {} <meta-key> <meta-value> --url=%'
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 {} <meta-key> <meta-value> --url=%'

输入范例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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=%'
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=%'
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

要显示 favorite_color 字段,需要使用 functions.php 文件或创建自定义插件。

将单个网站安装转换为多网站安装

WP-CLI 可以轻松地将独立 WordPress 网站转换为多站点网络。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp core multisite-convert
wp core multisite-convert
wp core multisite-convert

结果:单一网站转换为多网站网络。

转换前,确保停用所有插件。

转换网站后,需要在 wp-config.php 文件中配置网络 URL。你可以选择使用子域(如 site.example.com)或子目录(如 example.com/site)。此外,请检查 .htaccess 文件,因为 URL 重写规则(由 Apache 的 mod_rewrite 模块处理)可能需要手动更新,以确保永久链接和网站结构正常工作。

小结

本指南重点介绍了 WP-CLI 在管理 WordPress 多站点环境方面的强大功能和灵活性,使其成为开发人员和管理员追求效率和控制的必备工具。从处理插件、用户和数据库到执行高级操作(如将单个网站转换为多站点),WP-CLI 可以精确、快速地简化复杂的任务。

评论留言