~/blog/wp-cli-practical-guide-deployment-cache-plugins-update.md
WordPress 開發與技巧 · 2025 / 09 / 15

滑鼠點到手抽筋? WP-CLI 指令實戰大全,一鍵搞定部署、快取、更新!

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
滑鼠點到手抽筋? WP-CLI 指令實戰大全,一鍵搞定部署、快取、更新!
目錄 table-of-contents.md

更新外掛、清快取、換網址……滑鼠游標在 WordPress 後台來回奔波,一天點下來,右手食指比跑完馬拉松還痠。管的網站一多,這種純手工維運就是吞噬時間的黑洞。WP-CLI 把這些操作全收進一行行指令,這篇實戰大全帶你一鍵搞定部署、快取與更新。

幸好,我們活在一個美好的時代,有 WP-CLI 這個神兵利器。如果你還沒聽過或是不熟悉它,可以先看看我同事寫的入門介紹。今天,我們不談理論,直接上戰場。這篇文章就是要帶你深入 WP-CLI 指令實戰的核心,聚焦在每個開發者最痛的三個點:部署、清快取、更新外掛。準備好了嗎?放下你的滑鼠,打開你的終端機,讓我們一起把效率點滿!

為什麼每個 WordPress 開發者都該把 WP-CLI 當飯吃?

在我們深入指令前,讓我再囉嗦幾句。為什麼我對 WP-CLI 如此推崇?因為它徹底改變了我的工作流程。過去,管理 10 個網站可能就需要一個下午;現在,透過 WP-CLI 加上一點腳本魔法,100 個網站的日常維護可能也只需要半小時。

  • 速度與效率: 一行指令,勝過後台數十次點擊。尤其在處理大量任務時,差距是天與地。
  • 自動化潛力: WP-CLI 的指令可以寫成 shell 腳本,搭配伺服器的 Cron Job,就能實現全自動的網站備份、更新與健康檢查。一人管百站,真的不是夢。
  • 錯誤排除: 當網站因為某個外掛或主題更新而出錯,連後台都進不去時(傳說中的「死亡白畫面」),WP-CLI 就是你唯一的救贖。透過指令停用外掛,就能立刻讓網站起死回生。
  • 精準控制: 你可以對資料庫進行精細的操作,例如全站搜尋並取代特定字串,這是光靠後台介面幾乎不可能完成的任務。

總之,學會 WP-CLI 不只是學一個工具,而是提升你的開發維度。好了,說教完畢,我們來點實際的。

WP-CLI 實戰起手式:環境準備與基本功

要施展 WP-CLI 的魔法,前提是你需要有伺服器的 SSH (Secure Shell) 連線權限。這通常是高品質主機的標配。當你透過終端機成功登入主機後,可以先用以下指令確認 WP-CLI 是否已經安裝妥當:

wp --info

如果看到一堆版本資訊,恭喜你,可以開始了。如果沒有,那你得先聯絡你的主機商,或是參考官方文件自行安裝。在進入核心戰場前,我們先用幾個基本指令暖暖身,確認你是在正確的 WordPress 網站根目錄下操作:

  • wp core version:檢查 WordPress 核心版本。
  • wp plugin list:列出所有已安裝的外掛及其狀態(啟用/停用、版本)。
  • wp theme list:列出所有已安裝的主題及其狀態。

這些基本指令就像是武功的馬步,雖然簡單,卻是所有變化的基礎。

指令實戰一:告別手動更新地獄,一鍵搞定外掛與主題

網站維護最頻繁的工作之一,絕對是更新。看著後台右上角那顆紅色的更新數字,是不是有點焦慮?有了 WP-CLI,這一切都變得優雅從容。

檢查更新狀態

在動手前,先偵查敵情。用這兩個指令看看哪些東西需要更新:

# 檢查外掛更新
wp plugin status

# 檢查主題更新
wp theme status

終端機會清楚地列出哪些外掛或主題有新版本,一目了然。

一次更新所有外掛/主題

準備好體驗一鍵升級的快感了嗎?

# 一次更新所有外掛
wp plugin update --all

# 一次更新所有佈景主題
wp theme update --all

工程師囉嗦時間: `update --all` 這個指令雖然爽,但也有風險。萬一某個外掛的新版本跟你的網站不相容,可能會導致網站掛掉。所以,在生產環境(正式上線的網站)執行前,務必、千萬、一定要先備份你的網站!或是在預備環境 (Staging) 測試過再執行。

精準打擊!只更新特定外掛

如果你比較謹慎,想要一個一個來,當然也沒問題。你可以指定要更新的外掛名稱(slug):

wp plugin update akismet hello-dolly woocommerce

這樣就可以只更新你指定的這幾個外掛,控制風險。

緊急救援:啟用與停用外掛

想像一個情境:你剛更新完一個外掛,網站就直接白畫面了。後台進不去,怎麼辦?這就是 WP-CLI 大顯身手的時刻!

# 停用惹禍的外掛(例如 woocommerce)
wp plugin deactivate woocommerce

# 啟用外掛
wp plugin activate woocommerce

透過 SSH 連線進主機,一行指令就能停用外掛,讓你的網站恢復正常,這簡直是網站管理員的救命仙丹。

指令實戰二:快取清理的藝術,讓網站效能一飛沖天

「你清一下快取試試看?」這句話大概是工程師跟客戶之間最常出現的對話。每次修改完 CSS 或新增內容,快取常常會讓你看不到最新的變更。用 WP-CLI 清快取,比登入後台找按鈕快多了。

核心物件快取 (Object Cache)

不論你用的是 Redis 還是 Memcached,WordPress 內建了一個通用的物件快取指令:

wp cache flush

這個指令會告訴 WordPress:「嘿,把你所有暫存的東西都丟掉,重新抓取最新的!」這通常是最快也最直接的方式。

應對常見的快取外掛

很多時候,我們還會搭配使用頁面快取外掛 (Page Cache Plugin)。好消息是,許多主流的快取外掛都支援 WP-CLI。以下是幾個常見的例子:

  • W3 Total Cache: wp w3-total-cache flush all
  • WP Rocket: wp rocket clean
  • WP Super Cache: wp super-cache flush

工程師囉嗦時間: 每個快取外掛的指令可能不太一樣,我強烈建議你花點時間去查閱你正在使用的快取外掛的官方文件,看看它提供了哪些 WP-CLI 指令。把這些指令記下來,你會發現你的除錯效率提升了好幾個檔次。

指令實戰三:無痛網站部署與遷移的終極腳本

這部分是今天的重頭戲,也是最能體現 WP-CLI 價值的地方。傳統的網站部署或遷移(例如從測試站搬到正式站),最麻煩的就是處理資料庫裡的網址。手動改?很容易漏掉,而且還可能改壞序列化 (Serialized) 的資料。WP-CLI 的 `search-replace` 指令就是為此而生的。

關鍵第一步:資料庫的搜尋與取代

假設我們要從 `staging.roamer-tech.com` 搬家到 `roamer-tech.com`,指令如下:

# 先用 --dry-run 進行模擬,不會真的修改資料庫
wp search-replace 'staging.roamer-tech.com' 'roamer-tech.com' --dry-run

# 確認無誤後,拿掉 --dry-run,正式執行
wp search-replace 'staging.roamer-tech.com' 'roamer-tech.com' --all-tables

超級重要! `--dry-run` 參數是你的救命符!它會模擬一次搜尋取代的過程,告訴你哪些資料表的哪些欄位會被修改,但不會真的寫入資料庫。等你確認報告的內容都正確無誤後,再移除 `--dry-run` 執行真正的修改。這個習慣可以幫你避免無數次的災難。

部署腳本範例

真正的專業玩家,會把一系列的部署指令寫成一個腳本 (Shell Script)。這樣每次部署時,只需要執行一個檔案,就能自動完成所有事情。以下是一個簡單的部署腳本範例:

#!/bin/bash

# 浪花科技 - Eric 的簡易部署腳本
# 使用前請務必確認路徑與網址,並且備份!

# --- 設定變數 ---
OLD_URL='staging.roamer-tech.com'
NEW_URL='roamer-tech.com'

# --- 開始執行 ---
echo "🚀 開始部署..."

# 1. 從 Git 拉取最新程式碼 (如果你的專案有用 Git)
echo "(1/6) 正在拉取最新程式碼..."
git pull origin main

# 2. 更新 Composer 依賴 (如果你的專案有用 Composer)
echo "(2/6) 正在更新 Composer 依賴..."
composer install --no-dev --optimize-autoloader

# 3. 更新資料庫 URL
echo "(3/6) 正在更新資料庫 URL..."
wp search-replace $OLD_URL $NEW_URL --all-tables --skip-columns=guid

# 4. 更新 WordPress 核心與資料庫結構
echo "(4/6) 正在更新 WordPress 核心..."
wp core update-db

# 5. 清除所有快取
echo "(5/6) 正在清除所有快取..."
wp cache flush
wp rocket clean # 假設使用 WP Rocket

# 6. 重設固定網址結構,避免 404
echo "(6/6) 正在重設固定網址..."
wp rewrite flush

echo "✅ 部署完成!請到網站上確認一切正常。"

你可以把這段程式碼存成一個檔案,例如 `deploy.sh`,然後給它執行權限 (`chmod +x deploy.sh`)。未來每次要部署,只要執行 `./deploy.sh`,泡杯咖啡,回來就搞定了。

結語:別讓滑鼠限制了你的生產力

從簡單的外掛更新快取清理,到複雜的網站部署流程,WP-CLI 展現了它無與倫比的強大威力。它不僅僅是一個工具,更是一種高效、專業的工作哲學。剛開始可能會覺得要記很多指令很麻煩,但相信我,一旦你開始在日常工作中使用它,你會很快愛上這種「指令一切」的快感,再也回不去那個用滑鼠點點點的時代。

希望這篇實戰指南能幫助你跨出第一步。當然,WP-CLI 的功能遠不止於此,它還有管理使用者、匯入匯出內容、操作資料庫等無數強大的功能,等著你去探索。

延伸閱讀

如果你在導入 WP-CLI 的過程中遇到任何困難,或者想為你的企業打造更穩定、更自動化的 WordPress 維運流程,都歡迎與浪花科技聯繫。我們的團隊擁有豐富的實戰經驗,能為你提供最專業的解決方案。

// FAQ

常見問題

如何用 WP-CLI 一次更新所有 WordPress 外掛與佈景主題?
更新所有外掛使用指令 wp plugin update --all,更新所有佈景主題使用 wp theme update --all。執行前務必先備份網站,或先在預備環境(Staging)測試,因為某個新版本可能與網站不相容而導致網站故障。
WordPress 出現死亡白畫面、連後台都進不去時,可以用 WP-CLI 救援嗎?
可以。透過 SSH 連進主機後,使用 wp plugin deactivate 加上外掛名稱即可停用惹禍的外掛,讓網站恢復正常。例如 wp plugin deactivate woocommerce,確認問題排除後再用 wp plugin activate 重新啟用。
用 WP-CLI 做網站搬家時,如何安全地替換資料庫裡的網址?
使用 wp search-replace 指令進行搜尋取代,例如 wp search-replace '舊網址' '新網址' --all-tables。執行正式取代前先加上 --dry-run 參數做模擬,它會列出哪些資料表欄位會被修改但不實際寫入,確認無誤後再移除 --dry-run 執行,可避免破壞序列化資料。
如何用 WP-CLI 清除 WordPress 快取?
清除核心物件快取(不論使用 Redis 或 Memcached)使用通用指令 wp cache flush。若搭配頁面快取外掛,指令因外掛而異,例如 W3 Total Cache 用 wp w3-total-cache flush all、WP Rocket 用 wp rocket clean、WP Super Cache 用 wp super-cache flush。
使用 WP-CLI 需要什麼前提條件?
需要主機的 SSH 連線權限。透過終端機登入主機後,可執行 wp --info 確認 WP-CLI 是否已安裝;若顯示版本資訊即代表可以使用,若未安裝則需聯絡主機商或依官方文件自行安裝。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

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

$
// final.exec()

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