文派命令列介面

WordPress 管理之道

無需瀏覽器,指尖流轉程式碼,掌控 WordPress 之一切。

# 源 (Origin / EN) curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
# 鏡 (Mirror / CN) curl -O https://feicode.com/wp-cli/builds/raw/branch/gh-pages/phar/wp-cli.phar
# 短 (Short / CN) curl -O wp-cli.cn/phar
# 驗 (Verify) php wp-cli.phar --info
開始使用

執行快如閃電,無需等待,外掛更新、資料匯入。

輸入極簡指令,直達核心。摒棄繁雜介面更純粹。

自動化腳本,批次處理。減少重複勞動隨風而去。

萬物之源
01

下載 (Download)

選擇離你最近的源下載 wp-cli.phar 檔案。以下自選其一。

# 推薦國內使用者使用鏡像源 curl -O https://feicode.com/wp-cli/builds/raw/branch/gh-pages/phar/wp-cli.phar
# 加速短鏈 curl -O wp-cli.cn/phar
02

賦權 (Permission)

賦予檔案可執行權限,使其成為可運行的程式。

chmod +x wp-cli.phar
03

歸位 (Move)

將檔案移動到系統路徑,並重新命名為 wp

sudo mv wp-cli.phar /usr/local/bin/wp
04

驗證 (Verify)

確認安裝成功。

wp --info
01

下載 (Download)

下載 wp-cli.phar 到你的專案根目錄。

curl -O https://feicode.com/wp-cli/builds/raw/branch/gh-pages/phar/wp-cli.phar
02

設定 (Configure)

在同一目錄下建立 wp.bat 檔案。

echo @php "%~dp0wp-cli.phar" %* > wp.bat
03

路徑 (Path)

將該目錄添加到系統的環境變數 PATH 中。

04

驗證 (Verify)

打開新的命令列視窗驗證。

wp --info

日常之修煉
查看系統資訊
$ wp --info
檢查 WordPress 核心更新
$ wp core check-update
更新 WordPress 核心
$ wp core update
清理快取
$ wp cache flush
開啟維護模式
$ wp maintenance-mode activate
匯出資料庫
$ wp db export backup.sql
匯入資料庫
$ wp db import backup.sql
搜尋並替換 (支援序列化)
$ wp search-replace 'old.com' 'new.com'
最佳化資料庫表
$ wp db optimize
執行 PHP 程式碼
$ wp eval 'echo "Hello WP";'
互動式 Shell
$ wp shell
管理排程任務
$ wp cron event list
獲取選項值
$ wp option get siteurl
建立新文章
$ wp post create --post_title="Hello World" --post_status=publish
列出最近發佈的文章
$ wp post list --post_type=post --number=5
生成測試資料
$ wp post generate --count=10 --post_type=page
批次刪除文章
$ wp post delete $(wp post list --post_type=post --format=ids)
匯入圖片
$ wp media import ~/images/logo.png
重新生成縮圖
$ wp media regenerate --yes
列出未使用的媒體檔案
$ wp media list --post_parent=0
安裝並啟用外掛
$ wp plugin install woocommerce --activate
更新所有外掛
$ wp plugin update --all
列出所有外掛狀態
$ wp plugin list
停用外掛
$ wp plugin deactivate hello
安裝佈景主題
$ wp theme install twentytwentyone
啟用佈景主題
$ wp theme activate twentytwentyone
生成子佈景主題
$ wp scaffold child-theme my-child --parent_theme=twentytwentyone
列出所有佈景主題
$ wp theme list
建立新使用者
$ wp user create bob bob@example.com --role=editor
列出管理員使用者
$ wp user list --role=administrator
更新使用者密碼
$ wp user update bob --user_pass=strongpassword
管理使用者權限
$ wp cap list administrator
刪除使用者並重新分配文章
$ wp user delete bob --reassign=1
建立新網站 (多站點)
$ wp site create --slug=subsite --title="Sub Site"
列出所有網站
$ wp site list
查看詳細設定資訊
$ wp config list
檢查資料庫狀態
$ wp db check
查看資料庫大小
$ wp db size --human-readable
列出當前運行的 Cron 事件
$ wp cron event list
立即運行所有 Cron 事件
$ wp cron event run --due-now
跳過外掛/佈景主題運行 (排錯模式)
$ wp plugin list --skip-plugins --skip-themes
重新生成重寫規則 (Fix 404)
$ wp rewrite flush
驗證 WordPress 核心檔案校驗和
$ wp core verify-checksums

未來之演進

當命令列遇上人工智慧,WP-CLI 不再只是工具,而是你的智慧助手。 透過 AI 賦能,實現自然語言控制、程式碼自動生成與智慧故障診斷。

WP-CLI AI Assistant
AI @ wp-cli:~$

自然語言互動

告別繁瑣參數,直接告訴它你想做什麼。

# 範例 (需配合 AI 擴充) wp ai "幫我建立一個使用者名稱為 feibisi 的管理員"

智慧程式碼生成

自動生成外掛樣板程式碼、自訂文章類型註冊程式碼。

# 生成自訂文章類型 wp scaffold post-type book --label="書籍"

故障自動診斷

智慧分析日誌,快速定位錯誤根源並給出修復建議。

wp doctor check --all

運籌於帷幄

透過 wp-cli.yml 設定檔案,您可以定義全域參數、註冊命令別名,甚至管理遠端網站。

全域設定

一次設定,處處生效。省去重複輸入參數的煩惱。

wp-cli.yml
path: web/wp
url: http://example.com
user: admin
disabled_commands:
  - db drop
  - plugin install

遠端別名 (Aliases)

在本地機器上,直接操控遠端伺服器的 WordPress 網站。

wp-cli.yml
@prod:
  ssh: user@prod-server/var/www/html
@dev:
  ssh: user@dev-server/var/www/html
# 同步生產環境資料庫到本地 wp db export - | wp @local db import -

自動化之道

精通 WP-CLI 不僅僅是掌握單個命令,更在於將其融入自動化工作流。 這裡有一些進階的腳本與設定範例。

如果您管理著多個 WordPress 網站,可以編寫一個簡單的 Bash 腳本來遍歷目錄並更新所有網站。

#!/bin/bash

# 假設所有網站都在 /var/www/html/ 下
for dir in /var/www/html/*/; do
    echo "Updating $dir..."
    cd "$dir"
    
    # 檢查是否是 WordPress 目錄
    if wp core is-installed --allow-root; then
        # 更新核心、外掛和佈景主題
        wp core update --allow-root
        wp plugin update --all --allow-root
        wp theme update --all --allow-root
        echo "Done."
    else
        echo "Not a WordPress install. Skipping."
    fi
done

WordPress 預設的 Cron 依賴頁面存取觸發,不僅不穩定還影響效能。建議禁用它,改用系統的 Crontab。

1. 在 wp-config.php 中禁用預設 Cron:

define( 'DISABLE_WP_CRON', true );

2. 在伺服器的 crontab 中添加任務(每分鐘執行一次):

* * * * * php /path/to/wp-cli.phar cron event run --due-now --path=/var/www/html

配合 Redis 或 Memcached,WP-CLI 可以幫助您管理物件快取,極大提升動態頁面載入速度。

# 查看快取狀態 wp cache type # 清除所有快取 wp cache flush # 獲取特定快取鍵值 (除錯用) wp cache get my_key my_group

在 WordPress 多站點網路中,逐個站點執行命令非常繁瑣。結合 xargs 可以實現一行程式碼管理整個網路。

# 對網路中的所有站點啟用 Akismet 外掛 wp site list --field=url | xargs -n1 -I % wp plugin activate akismet --url=%
# 批次更新所有子站點的資料庫結構 wp site list --field=url | xargs -n1 -I % wp core update-db --url=%

使用 profile 擴充包,您可以深入分析 WordPress 啟動過程中的效能瓶頸,精確到毫秒級的鉤子 (Hook) 執行時間。

# 1. 安裝擴充包 wp package install wp-cli/profile-command # 2. 分析頁面載入的各個階段 wp profile stage --all # 3. 找出最慢的 10 個鉤子 wp profile hook --all --spotlight --count=10

將 WP-CLI 整合到自動化部署流程中。以下是一個 GitHub Actions 的範例,用於在部署前檢查程式碼標準。

.github/workflows/main.yml
name: WP Check
on: [push]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.0'
          tools: wp-cli
      - name: Install WP
        run: |
          wp core download
          wp config create --dbname=test --dbuser=root --dbpass=root
      - name: Verify Checksums
        run: wp core verify-checksums

只需幾行 PHP 程式碼,就能讓 WP-CLI 為你所用。建立一個簡單的命令來輸出 "Hello World"。

// command.php
if ( defined( 'WP_CLI' ) && WP_CLI ) {
    $command = function( $args, $assoc_args ) {
        $name = $assoc_args['name'] ?? 'World';
        WP_CLI::success( "Hello, $name!" );
    };
    WP_CLI::add_command( 'hello', $command );
}

# 運行方式:
# wp --require=command.php hello --name=Zen

實戰之演練

理論終須實踐檢驗。以下是兩個真實的維運場景,展示 WP-CLI 如何化繁為簡,解決棘手問題。

場景一:網站被駭,快速還原

緊急

某天早上,你發現網站被植入了惡意程式碼,且無法登入後台。此時 WP-CLI 是你的救命稻草。

1
驗證核心檔案完整性

快速找出被篡改的核心檔案。

wp core verify-checksums
2
強制重裝核心

不刪除 `wp-content`,僅覆蓋核心檔案,清除後門。

wp core download --force --skip-content
3
檢查未授權使用者

列出管理員,發現可疑帳號立即刪除。

wp user list --role=administrator wp user delete hacker --reassign=1

場景二:數萬篇文章批次修改

最佳化

你需要將所有文章中的舊網域 "old-site.com" 替換為 "new-site.com",且不能破壞序列化資料。

1
預演 (Dry Run)

先看看會影響多少行資料,確保心中有數。

wp search-replace 'old-site.com' 'new-site.com' --dry-run
2
執行替換並匯出備份

為了安全,建議先匯出 SQL,再執行替換。

wp db export before_replace.sql wp search-replace 'old-site.com' 'new-site.com'
3
清理快取

確保前台立即生效。

wp cache flush

場景三:網站健康與安全審計

日常

未雨綢繆勝過亡羊補牢。建立一套自動化的審計流程,定期檢查網站是否存在潛在風險。

1
檢查長期未更新的外掛

過期的外掛往往是安全漏洞的重災區。

wp plugin list --update=available
2
驗證所有核心檔案

確保沒有檔案被偷偷修改。

wp core verify-checksums
3
列出所有管理員

定期審查擁有最高權限的帳戶列表。

wp user list --role=administrator --fields=ID,user_login,user_email,registered

疑惑之微光

這是 PHP 記憶體限制導致的。您可以臨時增加記憶體限制運行命令:

php -d memory_limit=512M $(which wp) package list

出於安全考慮,不建議以 root 身份運行 WP-CLI。如果必須這樣做,請添加 --allow-root 參數:

wp plugin list --allow-root

您可以使用 --debug 參數查看詳細的執行日誌。如果懷疑是外掛衝突,可以添加 --skip-plugins 參數暫時禁用所有外掛運行命令。

wp plugin list --debug wp theme list --skip-plugins --skip-themes

非常安全。WP-CLI 能夠智慧處理 PHP 序列化資料(Serialized Data),這是直接使用 SQL 語句無法做到的。建議在操作前使用 --dry-run 進行預演。

wp search-replace 'http://' 'https://' --dry-run

WP-CLI 提供了自更新命令,您可以一鍵升級到最新穩定版:

wp cli update

您可以直接使用指定版本的 PHP 可執行檔案來運行 WP-CLI Phar 包:

/usr/bin/php7.4 wp-cli.phar plugin list

請首先檢查 wp-config.php 中的資料庫憑證是否正確。您也可以嘗試使用 wp db check 命令來診斷資料庫連線問題。

生態之延伸

WP-CLI 的力量不僅於此。透過包管理器,您可以安裝社群貢獻的命令,甚至編寫自己的擴充。

wp doctor

為您的 WordPress 進行全面體檢,發現潛在設定問題。

wp package install wp-cli/doctor-command

wp profile

剖析頁面載入過程,精確定位效能瓶頸(慢查詢、鉤子耗時)。

wp package install wp-cli/profile-command

wp shell

內建的 REPL 環境,像 Python Shell 一樣即時執行 PHP 程式碼。

wp shell

wp i18n

國際化工具集。生成 POT 檔案、轉換 PO/MO 檔案。

wp i18n make-pot . languages/plugin.pot

腳手架 (Scaffold)

快速生成標準化的 WP-CLI 命令包結構,開始您的擴充開發之旅。

wp scaffold package my-command

單元測試

為您的外掛或佈景主題生成 PHPUnit 測試檔案。

wp scaffold plugin-tests my-plugin
PHP 5.6+
WordPress 3.7+
System UNIX-like

亦可隨風潛入夜:composer require wp-cli/wp-cli-bundle