如何使用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 可以精確、快速地簡化複雜的任務。

評論留言