使用 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命令的嗎? 請在評論中告訴我。