~/blog/wordpress-wp-cli-tutorial-efficiency-guide.md
WordPress 開發與技巧 · 2025 / 09 / 18

終結滑鼠手! WP-CLI 神兵利器,讓你的 WordPress 管理效率原地起飛!

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
終結滑鼠手! WP-CLI 神兵利器,讓你的 WordPress 管理效率原地起飛!
目錄 table-of-contents.md

WP-CLI 是什麼,為什麼值得學?

WP-CLI 是 WordPress 官方的命令列工具,本質是把整個後台搬進終端機:更新全部外掛、搬站換網址、停用故障外掛,通通濃縮成一行指令。它還能做到圖形介面辦不到的事——後台完全進不去時照樣搶救網站、在資料庫層級正確替換序列化資料。這篇帶你從安裝到日常工作流,徹底終結滑鼠手。

如果你管理的不只一個 WordPress 網站,或經常處理搬站、批次維護、緊急救援,學會 WP-CLI 的投資報酬率非常高。這篇文章會帶你從「為什麼用」「怎麼裝」到「實戰常用指令」走一遍,並解釋每個關鍵指令背後的原理,讓你不只是複製貼上,而是真正知道自己在做什麼。

為什麼資深工程師都改用 WP-CLI?

圖形介面(GUI)直觀、適合偶爾操作,但碰到大量、重複或精密的任務時效率極低。WP-CLI 的核心優勢有四個:

  • 速度與效率:一行指令取代數十次點擊。例如一次更新所有外掛,只要 wp plugin update --all
  • 自動化與批次處理:WP-CLI 指令可以寫進腳本(Script),交給排程自動執行,例如凌晨自動更新外掛、清除快取。指令是純文字,天生適合自動化。
  • 網站救援:當某個外掛或主題導致「死亡白畫面」(White Screen of Death)、連後台都進不去時,你可以透過 SSH 用指令強制停用它,讓網站起死回生。這是 GUI 在「進不去後台」的前提下根本辦不到的。
  • 精準的資料庫操作:搬站最怕網址沒換乾淨。WP-CLI 的 search-replace 能正確處理 PHP 序列化資料,這是直接在 phpMyAdmin 用 SQL 取代做不到的。

簡單說,學會 WP-CLI 是從「WordPress 使用者」晉升為「WordPress 管理者/開發者」的關鍵一步:把時間從無盡的點擊中省下來,花在更有價值的事情上。

為什麼 search-replace 一定要用 WP-CLI,不能直接下 SQL?

這點值得單獨說明,因為它是最容易踩雷的地方。WordPress 會把許多設定(外掛選項、佈景主題設定、Widget 資料等)以 PHP 的「序列化字串」(serialized data)存進資料庫。序列化字串裡會記錄每段文字的「長度」,格式類似 s:23:"http://dev.example.com";,前面的 23 就是該字串的字元數。

如果你直接用 SQL 的 REPLACE() 把網址換成更長或更短的字串,文字內容變了、但前面記錄的長度數字沒跟著改,序列化結構就壞掉了,輕則某些設定讀不出來,重則外掛或佈景主題報錯。WP-CLI 的 search-replace 會先把序列化資料解開、替換後再重新計算長度寫回,因此能安全處理。這就是為什麼搬站務必走 WP-CLI,而不是手動下 SQL。

開始前要準備什麼?

WP-CLI 是在伺服器上執行的工具,所以動手前有兩個基礎門檻:

  1. SSH 存取權限:你需要透過 SSH(Secure Shell)連線到主機才能執行指令。多數提供 SSH 的虛擬主機商都支援;若你的主機完全沒有 SSH,可能要考慮升級方案或更換主機。
  2. 基本命令列知識:至少要會用 cd 切換目錄、ls 查看檔案列表。完全陌生的話,花十來分鐘看一份基礎教學就足以上手。

另外提醒一個觀念:WP-CLI 的指令大多需要在「WordPress 安裝目錄裡」執行(也就是能看到 wp-config.php 的那層),因為它要讀取網站設定才知道要操作哪個資料庫。連上 SSH 後,先 cd 到你的網站根目錄再下指令。

如何安裝 WP-CLI?三步驟搞定

安裝流程很簡單,跟著以下三步就能在伺服器上擁有這個工具。

步驟一:下載 wp-cli.phar 檔案

透過 SSH 登入主機後,執行:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

這會從 WP-CLI 官方 GitHub 儲存庫下載最新的穩定版本。.phar 是 PHP 的封裝執行檔格式,等於把整個工具打包成單一檔案。

步驟二:賦予執行權限並移動到系統路徑

下載下來的只是一個檔案,我們要讓它「可被執行」,並放到系統隨時找得到的位置,這樣才能在任何目錄直接打 wp

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

第一行 chmod +x 賦予檔案執行權限;第二行 sudo mv 用系統管理員權限把它移到 /usr/local/bin 並改名為 wp。之所以選這個目錄,是因為它通常已經在系統的 PATH 環境變數裡,放進去後系統就會把 wp 當成全域指令來找。

步驟三:驗證安裝

最後輸入:

wp --info

如果看到 PHP、MySQL 版本以及 WP-CLI 自身版本等資訊,代表安裝成功,你已經打開新世界的大門。

WP-CLI 實戰:從日常管理到緊急救援

光說不練假把戲。以下是最常用、最實用的指令,依使用情境分組,讓你直接對照需求查找。

核心、外掛與佈景主題管理

忘掉在後台一個一個點擊的日子吧:

  • 檢查 WordPress 核心版本:wp core version
  • 更新 WordPress 核心:wp core update
  • 列出所有外掛及其狀態:wp plugin list
  • 安裝並啟用一個外掛(例如 WooCommerce):wp plugin install woocommerce --activate
  • 一次更新所有外掛:wp plugin update --all
  • 停用某個外掛(網站掛掉時的救星):wp plugin deactivate akismet
  • 刪除某個佈景主題:wp theme delete twentytwentythree

當你要維護數十個網站時,把這些指令寫成腳本批次跑,幾秒鐘就能完成所有網站的例行更新。

資料庫操作的關鍵指令:search-replace

這是 WP-CLI 最不可或缺的功能。要把網域從 http://dev.example.com 搬到 https://example.com 時,先用「模擬執行」確認影響範圍:

wp search-replace 'http://dev.example.com' 'https://example.com' --dry-run

--dry-run 參數至關重要:指令會完整跑一遍,告訴你會在哪些資料表、找到多少筆需要替換的資料,但不會真的寫入資料庫。這讓你能先確認替換範圍正確,避免誤改。建議養成「任何 search-replace 一律先 dry-run」的習慣。

確認無誤後,拿掉 --dry-run 正式執行:

wp search-replace 'http://dev.example.com' 'https://example.com' --skip-columns=guid

這裡多了 --skip-columns=guidguidposts 資料表裡每篇內容的唯一識別字串,雖然長得像網址,但它的設計用途是「永久不變的識別碼」,RSS 閱讀器等工具會用它來判斷文章是否為同一篇。一旦更動,部分訂閱者可能把舊文章誤判成新文章重新收一次。因此官方最佳實踐是搬站時跳過 guid 欄位,只換真正會顯示給使用者的網址。

實務提醒:執行任何寫入資料庫的操作前,務必先完整備份資料庫。即使 WP-CLI 已經幫你處理好序列化與 guid 的細節,備份仍是你最後的安全網。

使用者管理

客戶忘記密碼,或你自己被鎖在網站外面?小事一樁:

  • 列出所有使用者:wp user list
  • 重設管理員密碼(假設使用者名稱是 admin):wp user update admin --user_pass=YourNewSecurePassword
  • 建立一個新的管理員帳號:wp user create newadmin newadmin@example.com --role=administrator

再也不用進資料庫手動改那串加密過的密碼了——WP-CLI 會幫你用正確的方式重新雜湊密碼寫回。

效能與維護

日常維護工作也能交給 WP-CLI:

  • 清除所有暫存(Transients):外掛的暫存有時會出問題,這指令可強制清除。
    wp transient delete --all
  • 重新產生媒體庫縮圖:換了佈景主題、圖片尺寸不同時,需要重新產生縮圖。
    wp media regenerate --yes
  • 檢查並執行到期的排程工作:WordPress 的 Cron Job 有時會卡住,可用指令手動觸發到期任務。
    wp cron event run --due-now

關於 WP-Cron 為什麼會「卡住」、以及如何改用系統 Cron 來穩定觸發排程,這篇站內文章有更完整的說明:搞定 WP-Cron,告別「錯過排程」惡夢。用指令來檢查與觸發排程,會比在後台瞎猜清晰許多。

結語:別再用滑鼠了,讓指令為你工作

今天我們只是淺嚐 WP-CLI 的皮毛。它還有大量指令與參數,涵蓋內容匯入匯出、多站點網路(Multisite)管理,以及與 WooCommerce、ACF 等知名外掛的整合。它學習門檻不高,投資報酬率卻極高。

無論你是開發者、網站管理者還是進階使用者,只要對 WordPress 認真,都值得把 WP-CLI 加進工具箱。它不只省下寶貴時間,更能在關鍵時刻拯救你的網站。現在就動手安裝,開始你的命令列大師之路吧!

需要更專業的 WordPress 技術支援嗎?

覺得今天的內容太硬核,或你的網站遇到更棘手的問題?浪花科技的團隊擁有多年 WordPress 開發與維護經驗,無論是客製化開發、效能調校還是緊急救援,都能提供專業的解決方案。別再自己埋頭苦幹,歡迎與我們聯繫,讓專業的來。

延伸閱讀

// FAQ

常見問題

WP-CLI 是什麼?學它有什麼好處?
WP-CLI 是用命令列指令管理 WordPress 的官方工具,能把後台需要數十次點擊的工作濃縮成一行指令,例如更新所有外掛、搬站換網址、停用故障外掛。它還能完成圖形後台辦不到的事,例如在後台完全進不去時搶救網站,或在資料庫層級正確替換序列化資料,因此對管理多站或常做搬站、批次維護的人投資報酬率很高。
搬站換網址為什麼一定要用 WP-CLI 的 search-replace,而不能直接下 SQL?
因為 WordPress 會把許多設定以 PHP 序列化字串存進資料庫,字串裡會記錄每段文字的長度。直接用 SQL 的 REPLACE() 替換網址會改變文字內容但不更新長度數字,導致序列化結構損壞、設定讀不出來甚至報錯。WP-CLI 的 search-replace 會先解開序列化、替換後重新計算長度寫回,因此能安全處理。
怎麼安裝 WP-CLI?
透過 SSH 登入主機後分三步:先用 curl 下載官方的 wp-cli.phar 檔案;再用 chmod +x 賦予執行權限,並用 sudo mv 把它移到 /usr/local/bin 並改名為 wp,讓它成為全域指令;最後執行 wp --info,若能看到 PHP、MySQL 與 WP-CLI 版本資訊就代表安裝成功。
用 WP-CLI 做 search-replace 時 --dry-run 參數有什麼用?
--dry-run 會讓指令完整跑一遍並告訴你會在哪些資料表、找到多少筆需要替換的資料,但不會真的寫入資料庫。它能讓你先確認替換範圍正確、避免誤改,建議養成任何 search-replace 一律先 dry-run 的習慣,確認無誤後再拿掉參數正式執行。
WP-CLI 搬站時為什麼要加上 --skip-columns=guid?
guid 是 posts 資料表中每篇內容的唯一識別字串,雖然長得像網址,但設計用途是永久不變的識別碼,RSS 閱讀器等工具會用它判斷文章是否為同一篇。一旦更動,部分訂閱者可能把舊文章誤判成新文章重新收一次,因此官方最佳實踐是搬站時用 --skip-columns=guid 跳過該欄位,只替換真正會顯示給使用者的網址。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?