使用 WP-CLI 安装、更新和管理 WordPress 插件

已发表: 2022-07-26

WP-CLI 允许您在 WordPress 管理员中执行几乎所有可以执行的操作,但在命令行上。 这样可以节省大量时间并提供更清洁的工作流程。 您可以使用 WP-CLI 来管理 WordPress 核心、运行主题更新、管理多站点安装等等。 在本文中,我们将专注于最常见的用例之一,即管理您的 WordPress 插件。

WP-CLI 命令的结构都相同。 总是有一个父命令(例如wp plugin )和一个子命令(例如install ),后面是参数和开关。 我们将在本文中专注于wp plugin及其子命令,但您可以在我们的 WP-CLI 命令结构指南中看到更详细的解释。

那篇文章以wp plugin命令为例,重点介绍了如何使用 WP-CLI 安装和激活插件。 在本文中,我们将深入探讨如何使用 WordPress 命令行界面管理我们的插件。

安装和激活插件

wp plugin parent 命令目前有 16 个官方子命令。 在本节中,我们将介绍用于安装和激活的子命令。 我们还将了解如何使用单个命令安装和激活插件。 我们还将了解如何从 WordPress 插件目录以外的来源安装插件。

输入wp plugin install后跟插件的官方 slug 以安装最新版本:

wp插件安装hello-dolly
安装 Hello Dolly (1.7.2)
从 https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip 下载安装包...
使用缓存文件'/Users/eriktorsner/.wp-cli/cache/plugin/hello-dolly-1.7.2.zip'...
hello-dolly.1.7.2.zip的真实性无法验证,因为没有找到签名。
拆开包装...
正在安装插件...
插件安装成功。
成功:安装了 1 个插件中的 1 个。

接下来,我们使用wp plugin activate命令激活插件:

wp插件激活hello-dolly
插件“hello-dolly”已激活。
成功:激活 1 个插件中的 1 个。

搜索插件蛞蝓

请注意,slug 通常与插件名称不同。 slug 在 WordPress 插件目录中的插件 URL 中可见,但您可以通过坚持使用命令行并使用search子命令,后跟两个参数及其值来加快工作流程: --per-page=1--fields=name,slug

可选的--per-page参数告诉 WP-CLI 显示多少个结果,在本例中只有一个。 如果你不给它这个参数,它将默认显示 10 个结果。 我在这里给它一个值1因为我只想看到最相关的结果。

--fields参数告诉 WP-CLI 从 API 请求特定字段,在这种情况下是插件的名称和 slug。 您可以在此处使用多种值,包括查看当前version号的版本,以及查看插件rating的百分比和评分总数。 如果您只想显示单个字段的结果,则可以改用--field=<field> 。 您必须在wp plugin search命令中使用--fields--field参数。

wp 插件搜索“wp 卸载媒体”--per-page=1 --fields=name,slug
成功:显示 66 个插件中的 1 个。
+-------------------------------------------------- -------------------------------------------+------------------ --------+
| 姓名 | 蛞蝓 |
+-------------------------------------------------- -------------------------------------------+------------------ --------+
| 适用于 Amazon S3、DigitalOcean Spaces 和 Google Cloud Sto 的 WP Offload Media Lite | amazon-s3-and-cloudfront | 亚马逊
| 愤怒 | |
+-------------------------------------------------- -------------------------------------------+------------------ --------+

由于此命令的响应是一个列表,因此这是展示--format参数可以做什么的好机会。 让我们让 WP-CLI 以 JSON 格式向我们提供该列表,然后通过 jq 实用程序将其管道化以进行更漂亮的格式化。 jq 实用程序是一个轻量级的命令行 JSON 处理器,您可以在上面的链接中安装它,或者在线试用。 确保省略| jq 如果您没有安装它,请从下面的命令中获取| jq

当我们要求 JSON 格式的输出时,WP-CLI 会省略状态消息,因此我们不会收到损坏的 JSON:


$ wp plugin search "wp offload media" --per-page=1 --fields=name,slug --format=json | jq
[
  {
    "name": "适用于 Amazon S3、DigitalOcean Spaces 和 Google Cloud Storage 的 WP Offload Media Lite",
    “蛞蝓”:“amazon-s3-and-cloudfront”
  }
]

要在安装后激活插件,请使用wp plugin activate后跟插件的官方 slug。

同时安装和激活插件

在使用 WP-CLI 管理插件时,最大的优势之一是您可以使用单个命令安装和激活插件。 虽然activate可以用作wp plugin的子命令,但它也可以用作wp plugin install命令的参数:

# 同时安装和激活插件
wp 插件安装 --activate hello-dolly

安装特定插件版本

出于测试目的,您想要安装特定版本的插件并不少见。 只要您想要的版本在 WordPress 插件目录中仍然可用,您就可以选择您认为合适的任何版本:

# 安装特定的插件版本
wp 插件安装 woocommerce --version=5.5.3

从其他位置安装插件

WordPress 插件目录不是我们获得插件的唯一地方。 我们也可以直接从文件系统安装插件。 大多数情况下,当您购买高级插件时,您会以 zip 文件的形式获得初始交付。 WP-CLI 会很乐意直接安装该 zip 文件,而无需先解压缩包:

# 从下载文件夹安装插件
$ wp 插件安装 ~/Downloads/advanced-custom-fields-pro.zip

如果您要安装的插件在 URL 上可用,这也适用,可能只能通过请求参数或在具有自签名证书的服务器上提供凭据来访问:

# 从 URL 获取插件
wp 插件安装 http://www.hellfish.media/my-plugin.zip

# ...甚至是来自亚马逊存储桶的私有文件:
wp 插件安装 https://s3.amazonaws.com/bucketname/my-plugin.zip?X-Amz-SignedHeaders=host&X-Amz-Expires=900&X-Amz-Signature=abc123

# 从我们的内部服务器使用自签名证书:
wp 插件安装 https://intranet.hellfish.media/my-plugin.zip --insecure

使用 WP-CLI 更新插件

安装插件后,出于安全原因保持更新很重要要了解是否有要更新的插件,我们可以运行wp plugin list命令:

wp插件列表
+-------------------+----------+------ -----+----------+
| 姓名 | 状态 | 更新 | 版本 |
+-------------------+----------+------ -----+----------+
| amazon-s3-and-cloudfront | 亚马逊活跃 | 可用 | 2.6.1 |
| 你好多莉 | 活跃 | 可用 | 1.7.1 |
| wunderdevmu | 必须使用 | 没有 | 1.0 |
+-------------------+----------+------ -----+----------+

在这种情况下,Hello Dolly 和 WP Offload Media 插件都需要更新。 自然有一个单独的子命令,称为update

我们可以一个一个地更新它们,或者有点懒惰,只需使用--all开关一次性更新所有需要更新的东西。 update 命令的默认行为是一直更新到最新的可用版本,包括主要版本升级。 但是通过使用--minor开关,我们可以更加小心,并且只更新次要版本。 例如,我们可以告诉它从 1.2.3 更新到 1.3.0,但不能更新到 2.0.0。 我们甚至可以格外小心并使用--patch开关将更新限制为仅补丁,即从 1.2.3 到 1.2.5,但从不到 1.3.0。

# 仔细一一更新插件
wp 插件更新 wp-offload-media
wp插件更新hello-dolly

# 牛仔方法
wp插件更新--全部

# 更理智一点
wp 插件更新 --all --minor

# 非常防御
wp 插件更新 --all --patch

注意: --minor--patch开关假定插件使用语义版本控制。 并非所有插件都这样做,因此您需要查找您正在使用的插件,这样您就不会得到任何令人不快的惊喜。 --dry-run选项允许您检查并确保您的命令是正确的:

# 测试将单个插件更新为仅补丁
wp 插件更新 hello-dolly --patch --dry-run

--exclude=<plugin name>参数用于指示哪些插件应该被排除在更新之外。 将插件名称包含为逗号分隔的列表,WP-CLI 将更新所有其他插件,同时不理会这些插件:

wp 插件更新 --all --exclude=hello-dolly
启用维护模式...
从 https://deliciousbrains.com/my-account/download/7512/?version=2.6.2 下载更新...
解压更新...
正在安装最新版本...
正在删除旧版本的插件...
插件更新成功。
禁用维护模式...
+--------------+-------------+-------- -----+----------+
| 姓名 | 旧版本 | 新版本 | 状态 |
+--------------+-------------+-------- -----+----------+
| amazon-s3-and-cloudfront | 亚马逊2.6.1 | 2.6.2 | 更新 |
+--------------+-------------+-------- -----+----------+

强制插件重新安装

大多数高级插件都带有自己的内置更新检查器,它也适用于 WP-CLI。 根据我的经验,任何可以通过 WordPress 管理页面一键更新的插件也可以使用 WP-CLI 进行更新。 但在某些情况下,更新是通过新版本的 zip 文件提供的,您需要将其放在服务器上的正确位置。 您可以通过使用--force开关强制重新安装插件来应用这些更新:

# 强制插件重新安装
wp 插件安装 ~/Downloads/my-custom-plugin-v2.zip --force

启用自动更新

从 5.5 版本开始,WordPress 可以自动更新插件。 需要为每个单独的插件启用自动更新。 WP-CLI 不为自动更新提供任何批量处理。 必须使用auto-updates子命令为每个插件单独完成。 您可以使用以下命令查看它是如何工作的:

# 检查插件是否启用了自动更新
wp插件自动更新状态hello-dolly

# 开启自动更新 
wp 插件自动更新启用 hello-dolly

# 再次禁用它
wp 插件自动更新禁用 hello-dolly

停用和删除插件

安装、激活和更新插件是最常见的任务,但 WP-CLI 还可以为我们处理其他插件管理工作。

如果您曾经试图找出导致 WordPress 网站出现问题的原因,那么您可能会被建议在第一步中停用所有插件。 可以在网络浏览器中通过批量处理来做到这一点,但这总是让我感到紧张。 我更喜欢使用--all开关通过命令行执行此操作。

# 一次性关闭所有插件
wp插件停用--all

# 并再次重新激活它们
wp插件激活--all

使用 WP-CLI 也可以轻松地完全删除插件。 通过命令行和浏览器执行此操作的一个区别是 WP-CLI 将允许您在先运行停用挂钩的情况下删除插件。 如果您曾经安装过一个在停用期间使 WordPress 崩溃的插件,您就会知道为什么它如此有用:

# 停用并卸载 
wp 插件停用 hello-dolly --uninstall

# 删除插件而不给它停用的机会
wp插件删除hello-dolly

还有与插件的激活和停用相关的toggle子命令。 它将翻转或切换激活状态,使其变为与当前状态相反的状态。 您可以添加--network以打开或关闭整个多站点网络的插件。

插件校验和

WP-CLI 能够将已安装插件的校验和与 WordPress 插件目录上相同插件和版本的校验和进行比较。 这是确定您的 WordPress 安装中的插件文件是否已被操纵的一种非常有效的方法。 如果有,则强烈表明您已被黑客入侵。

校验和是特殊的计算机算法,可以接受任何类型和大小的输入并将其转换为短字符串。 该字符串的长度通常约为 20-40 个字符,这使其适合存储在数据库中。 这个结果字符串被称为散列、签名,或者出于历史原因,称为校验和。

这些算法的独特之处在于,即使输入中的单个字符发生变化,输出也会完全不同。 将插件的所有文件一个一个地输入校验和算法,您最终会得到一个代表整个插件的小签名或校验和。

每次在 WordPress 插件目录上发布插件的新版本时,都会计算并保存该特定版本的校验和。 几个月后,当您想再次检查您是否被黑客入侵时,您可以要求 WP-CLI 计算插件的校验和,并将它们与 WordPress 保留的原始校验和进行比较。 如果您端有添加、修改或丢失的文件,插件的校验和将与原始校验和不同,并且 WP-CLI 会对此产生一些噪音。

处理这种哈希检查魔法的子命令称为verify-checksums ,它基本上与询问“自从我从 WordPress 插件目录获得插件后,我的插件是否没有改变?”

# 检查单个插件
wp 插件验证校验和 hello-dolly
成功:已验证 1 个插件中的 1 个

# 检查来自 repo 的所有插件
wp 插件验证校验和 --all

这仅适用于从官方 WordPress 插件目录安装的插件,因此此命令不会检查您的高级插件。 verify-checksums子命令也存在于wp core ,但不能用于验证 WordPress 主题。

脚本命令

到目前为止,我们介绍的命令对于需要管理 WordPress 插件的任何人都很有用。 我要介绍的最后一组wp plugin子命令主要是 WordPress 开发人员感兴趣的,因为它们主要用于 Bash 脚本。

首先我们需要谈谈 Unix 退出代码。 在 Unix 系统中,所有退出运行的程序都会返回一个退出代码。 标准解释是退出代码0表示程序正常完成,而非零退出代码表示发生了错误。

错误代码通常在 shell 脚本中用于if/else语句和其他形式的分支。 从命令提示符正常运行命令时,我们看不到退出代码,但我们总是可以使用$?

# 运行一些可行的东西并获取退出代码
日期
回声$?
0

# 运行失败的东西
ls /不存在的文件夹
ls: /idongfdg: 没有那个文件或目录
回声$?
1

在 WP-CLI 中,我们有一堆命令,主要用于检查某些内容并返回有用的退出代码。 wp plugin命令有两个子命令, is-installedis-active ,让我们检查某个插件是否已安装和激活:

# 检查 hello-dolly 是否安装(是)
wp 插件已安装 hello-dolly
回声$?
0

# 移除 hello-dolly 并再次检查
wp插件删除hello-dolly
wp 插件已安装 hello-dolly
回声$?
1

# 检查woocommerce是否被激活
wp插件是活跃的woocommerce
回声$?
0

# 停用 woocommerce
wp插件停用woocommerce
wp插件是活跃的woocommerce
回声$?
1

使用上述命令,可以编写 Bash 脚本,根据是否安装/激活某个插件来执行不同的操作。

我怀疑主要用于脚本目的的最后一个子命令是path 。 此命令仅返回插件的主 PHP 文件的路径,因此也返回插件文件夹。 我们可以将它与其他 Bash 技巧结合起来,例如:

# 显示woocommerce插件文件夹中的所有文件
ls -al $(dirname $(wp 插件路径 woocommerce))

这在日常命令行工作中并不是很有用,但是在编写脚本并且您需要获取插件的路径时它肯定很方便。

结论

如您所见,通过命令行管理 WordPress 插件可以提高您的速度,并使许多常见任务变得更加简单。 我已经介绍了管理插件时最常见的任务,但我鼓励您自己进一步探索。 您很快就会发现 WP-CLI 的强大功能远远超出了插件,让您几乎可以在 WordPress 管理员中做任何可以做的事情,而且速度要快得多。

你有什么很好的例子来说明你是如何使用wp plugin命令的吗? 请在评论中告诉我。