Claude Code x WordPress 網站管理
AI 文章延伸
選擇平台後可直接帶入閱讀脈絡,快速整理重點、補齊盲點,並延伸到同站相關文章。
我一直在想一件事:怎麼讓 Claude Code 直接幫我管 WordPress 網站?
最早的想法是自己寫一支外掛,開一組 REST API 讓 Claude Code 呼叫。後來也研究過用 MCP(Model Context Protocol)來串接。但越想越覺得不對——不管是自建 API 還是 MCP,Claude Code 能做的事都被限制在這些工具提供的端點裡。我想新增一個功能,就得先回去改 API;我想查一個 log,得先確認有沒有對應的 endpoint。
我真正想要的不是這個。我想要的是:Claude Code 直接幫我寫外掛、直接丟到主機上測試、直接用 WP-CLI 操作資料庫。不是透過中間層間接控制,而是像我自己 SSH 進主機一樣,什麼都能做。
透過 API 或 MCP 技術上做得到,但要把 WordPress 的管理權限開放給外部呼叫,風險太高。一個 API endpoint 設計不好,等於幫攻擊者開了一扇門。
後來發現答案其實很簡單——SSH。
我在 Terminal 裡打了一句話:「幫我找出 Gmail 裡的退信,把對應的殭屍帳號從 WordPress 刪掉。」
三十秒後,Claude Code 讀完退信、提取出失敗的 email、SSH 進遠端主機、用 WP-CLI 查到那個帳號、確認是機器人註冊的,然後刪除。整個過程我只按了一次確認。
這不是什麼未來場景。我今天早上剛做完。
先搞懂 SSH 是什麼
你的 WordPress 網站放在一台遠端的電腦上,也就是主機。平常你透過瀏覽器打開後台管理介面來操作它,但其實還有另一種方式——直接「登入」那台電腦,用打字下指令的方式操作。
SSH 就是這個遠端登入的通道。你可以把它想像成一條加密的秘密隧道,連接你的電腦和主機。透過這條隧道,你可以在自己的電腦上對主機下達指令,就像你坐在那台主機前面一樣。
那 SSH key 又是什麼?一般登入需要帳號密碼,但每次都要輸入密碼很麻煩,而且密碼可能被猜到。SSH key 是一種更安全的驗證方式——它會產生一對鑰匙,一把「私鑰」留在你的電腦上,一把「公鑰」放到主機上。連線時兩邊自動配對,對上了就放行,不需要輸入任何密碼。
這對 Claude Code 來說很重要。因為它沒辦法像人一樣互動式地輸入密碼,但有了 SSH key,它就能直接連進主機執行指令,完全不需要人工介入。
設定步驟
整個設定大概五分鐘。
第一步:產生 SSH Key
在 Claude Code 裡直接請它幫你產生:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_你的主機名稱 -N "" -C "claude-code"
-N "" 是空密碼,這樣 Claude Code 才能非互動式地使用這把 key。ed25519 是目前推薦的演算法,比 RSA 更快更安全。
第二步:把公鑰加到主機
產生完會有兩個檔案:私鑰和 .pub 結尾的公鑰。把公鑰的內容複製起來,貼到你主機的 SSH 設定裡。
每家主機商的操作位置不同:
- Kinsta — Dashboard → 站台 → SFTP/SSH → SSH Keys → Add SSH Key
- Cloudways — Server → Security → SSH Keys
- 自管 VPS — 貼到
~/.ssh/authorized_keys
第三步:設定 SSH Config
這一步最關鍵。在 ~/.ssh/config 加上一組別名:
Host kinsta
HostName 你的主機IP
Port 你的SSH Port
User 你的使用者名稱
IdentityFile ~/.ssh/id_ed25519_你的主機名稱
IdentitiesOnly yes
設完之後,ssh kinsta "whoami" 能成功回傳使用者名稱,就代表搞定了。
從這一刻起,Claude Code 只要執行 ssh kinsta "任何指令",就等於在你的遠端主機上操作。
實際能做什麼?
設定好之後,你可以用自然語言請 Claude Code 做這些事:
網站維護
「幫我看一下遠端主機裝了哪些外掛,有沒有需要更新的。」
Claude Code 會執行 ssh kinsta "cd public && wp plugin list" 然後列出清單。需要更新就一句話搞定。
會員管理
「幫我搜尋這個 email 的會員帳號,如果是殭屍帳號就刪掉。」
它會用 wp user get [email protected] 查詢,確認角色和註冊時間,然後執行刪除。刪除前還會跟你確認。
除錯
「網站回報 500 錯誤,幫我查一下 error log。」
它會直接 SSH 進去看 log,分析錯誤訊息,可能還會順便找到問題根源。
資料庫操作
「幫我把所有草稿狀態超過一年的文章刪掉。」
ssh kinsta "cd public && wp post delete \$(wp post list --post_status=draft --format=ids --date_query='{\"before\":\"1 year ago\"}') --force"
你不需要自己寫這串指令。告訴 Claude Code 你要什麼,它會自己組出來。
批次作業
「把所有商品的 SEO 標題,從商品名稱改成『商品名稱 | 品牌名稱』的格式。」
這種手動要改幾百筆的工作,Claude Code 可以寫一段 WP-CLI 腳本一次跑完。
搭配其他工具更強大
SSH 只是基礎層。當你把其他工具也串起來,Claude Code 就變成一個完整的網站維運助手。
我們今天早上做的那個「清理殭屍帳號」的任務,實際流程是這樣的:
- 用 Google Workspace CLI 搜尋 Gmail 裡的退信
- 從退信內容裡提取出失敗的 email 地址
- 透過 SSH + WP-CLI 到遠端主機查詢對應的 WordPress 帳號
- 確認是殭屍帳號後刪除
- 用 Cloudflare API 建立 WAF 規則,防止未來的機器人註冊
五個步驟,跨了三個不同的服務。全部在 Claude Code 裡一氣呵成,我只需要描述需求和按確認。
先測試站,再正式站
能直接操作主機,不代表應該直接對正式站動手。
好的工作流程是這樣的:在 ~/.ssh/config 裡設定兩組別名——一組指向測試站,一組指向正式站。
Host staging
HostName 測試站IP
User ...
IdentityFile ~/.ssh/id_ed25519_staging
Host production
HostName 正式站IP
User ...
IdentityFile ~/.ssh/id_ed25519_production
日常操作的原則很簡單:改東西先在測試站跑,確認沒問題再到正式站執行。
跟 Claude Code 協作時也一樣。「幫我在測試站更新 WooCommerce 到最新版」,確認功能正常、沒有衝突之後,再說「正式站也更新」。外掛更新、PHP 版本升級、WP-CLI 批次腳本——任何可能影響網站運作的變更,都應該先過測試站。
有些操作例外。查 log、查會員資料、看外掛狀態這類唯讀操作,直接在正式站跑沒問題。刪殭屍帳號這種只影響特定資料的操作,確認對象正確後也可以直接執行。判斷的標準是:這個操作如果出錯,會不會影響到正在使用網站的人? 會的話,先去測試站。
大部分主機商都提供一鍵建立測試站的功能。Kinsta 的 Staging Environment、Cloudways 的 Staging Area,都能從正式站複製一份完整的環境。還沒有測試站的話,強烈建議先建一個。
安全性考量
把 SSH 存取權交給 AI 工具,第一反應通常是「這樣安全嗎?」
幾個重點:
私鑰只存在你的本機。 Claude Code 跑在本機,SSH key 也在本機,沒有任何憑證被上傳到雲端。
每個指令都會顯示在 Terminal。 Claude Code 不會偷偷執行什麼。每一步操作你都看得到,破壞性操作(刪除檔案、刪除帳號)會先跟你確認。
可以限制 SSH 使用者權限。 大多數主機商的 SSH 帳號本來就不是 root。你在遠端能做的事有上限,Claude Code 也一樣。
建議用獨立的 SSH key。 不要共用你平常登入用的 key。獨立的 key 方便管理,要撤銷存取權只要刪掉那把 key。
測試站和正式站用不同的 key。 這樣即使你不小心在對話中搞混別名,也不會因為同一把 key 通行兩邊而造成意外。
常見問題
連線時一直要求輸入密碼怎麼辦?
確認 ~/.ssh/config 裡有加 IdentitiesOnly yes,而且 IdentityFile 路徑正確。如果主機端的公鑰沒加好,SSH 會 fallback 到密碼驗證。
適用哪些主機商?
任何支援 SSH 的主機都行。Kinsta、Cloudways、Linode、DigitalOcean、自架 VPS,甚至共享主機(如果有開 SSH)都可以。
WP-CLI 一定要有嗎?
不一定,但強烈建議。沒有 WP-CLI,Claude Code 還是能透過 SSH 操作檔案和跑指令。但有了 WP-CLI,它就能用結構化的方式管理 WordPress——查外掛、管使用者、操作資料庫,效率差很多。大部分主機商都有預裝 WP-CLI。
會不會不小心搞壞網站?
Claude Code 在執行破壞性操作前會先跟你確認。但更好的做法是養成習慣:有風險的變更先在測試站驗證。確保你的主機有自動備份,Kinsta 每天自動備份,大部分主機商也都有類似機制。真的出事可以回滾。
多個網站怎麼管理?
在 ~/.ssh/config 裡設定多組別名就好:
Host site-a
HostName ...
User ...
IdentityFile ~/.ssh/id_ed25519_site_a
Host site-b
HostName ...
User ...
IdentityFile ~/.ssh/id_ed25519_site_b
跟 Claude Code 說「連到 site-a 看一下外掛狀態」「連到 site-b 更新 WooCommerce」,它會自動用對應的別名。
跟 FTP / SFTP 差在哪?
FTP 只能傳檔案。SSH 能執行指令。Claude Code 需要的是在遠端「做事」,不只是搬檔案。用 SSH 它能跑 WP-CLI、看 log、改設定、重啟服務,這些 FTP 都做不到。
回頭看整個流程
設定 SSH key 本身不難,五分鐘的事。但它打開的可能性很大。
以前管 WordPress 網站,我得開 Dashboard 點來點去,或是 SSH 進主機自己打指令。現在我只要用中文跟 Claude Code 講一句話,它會自己決定該用什麼指令、怎麼組合、按什麼順序執行。
它不只是一個更快的 Terminal。它是一個理解你意圖、能跨工具協作的維運助手。而 SSH key,就是讓這一切成為可能的第一步。