wp-cli-pages/zh-tw.html
feibisi 26da98b9fb
Some checks are pending
Deploy Pages / deploy (push) Waiting to run
feat: WP-CLI 中文指南 Pages 站点 + 自动部署 workflow
- 现有静态文件纳入 git 管理
- .forgejo/workflows/deploy-pages.yml: 推送 main 自动部署到 /home/www/pages/wp-cli/
- 站点: wp-cli.feibisi.net
2026-02-28 18:45:11 +08:00

1107 lines
No EOL
62 KiB
HTML
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WP-CLI 文派命令列 — WordPress 命令列介面</title>
<link rel="icon" type="image/jpeg" href="./favicon.jpg">
<link rel="stylesheet" href="./style.css">
<meta name="description" content="WP-CLI 是文派WordPress的命令列介面讓您無需瀏覽器即可管理 WordPress 網站。支援外掛更新、資料庫操作、使用者管理等自動化任務,是開發者的必備工具。">
<meta name="keywords" content="WP-CLI, WordPress, 命令列工具, 網站管理, 自動化維運, PHP, 開發工具">
<meta name="author" content="WP-CLI 中文指南">
<meta property="og:title" content="WP-CLI — WordPress 命令列介面">
<meta property="og:description" content="WP-CLI 是 WordPress 的命令列介面,讓您無需瀏覽器即可管理 WordPress 網站。支援外掛更新、資料庫操作、使用者管理等自動化任務,是開發者的必備工具。">
<meta property="og:type" content="website">
<meta property="og:image" content="https://wp-cli.org/assets/img/wp-cli-logo.png">
<meta property="twitter:card" content="summary_large_image">
<link rel="preconnect" href="https://cn.windfonts.com" crossorigin>
<link rel="stylesheet" crossorigin="anonymous" href="https://app.windfonts.com/api/css?family=wenfeng-systcn:wght@light;medium;regular;semibold;bold;extralight;heavy">
</head>
<body>
<div id="scroll-progress"></div>
<div id="toc" class="toc"></div>
<div class="container">
<header>
<div class="logo">
<img src="./wp-cli-logo.png" alt="WP-CLI Logo">
<div class="lang-switch">
<a href="./index.html"></a>
<span>/</span>
<a href="./zh-tw.html" class="active"></a>
</div>
</div>
<button id="menu-toggle" class="mobile-menu-btn" aria-label="切換選單">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</button>
<nav id="main-nav">
<a href="#install">安裝</a>
<a href="#waza">技巧</a>
<a href="#ai">智慧</a>
<a href="#config">設定</a>
<a href="#advanced">進階</a>
<a href="#cases">案例</a>
<a href="#faq">解惑</a>
<a href="#extend">生態</a>
<a href="https://feicode.com/wp-cli/wp-cli" target="_blank">feiCode ↗</a>
<button id="theme-toggle" class="btn-icon" aria-label="切換主題">
<span class="icon-sun"></span>
<span class="icon-moon"></span>
</button>
</nav>
</header>
<main>
<section class="hero">
<div class="hero-text-vertical">
<h1>文派命令列介面</h1>
<span class="subtitle">WordPress 管理之道</span>
</div>
<div class="hero-content">
<p class="description">無需瀏覽器,指尖流轉程式碼,掌控 WordPress 之一切。</p>
<div class="code-block">
<span class="comment"># 源 (Origin / EN)</span>
<span class="command" title="點擊複製" style="cursor: pointer;">curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar</span>
<div class="separator"></div>
<span class="comment"># 鏡 (Mirror / CN)</span>
<span class="command" title="點擊複製" style="cursor: pointer; color:#4CAF50;">curl -O https://feicode.com/wp-cli/builds/raw/branch/gh-pages/phar/wp-cli.phar</span>
<div class="separator"></div>
<span class="comment"># 短 (Short / CN)</span>
<span class="command" title="點擊複製" style="cursor: pointer; color:#4CAF50;">curl -O wp-cli.cn/phar</span>
<div class="separator"></div>
<span class="comment"># 驗 (Verify)</span>
<span class="command" title="點擊複製" style="cursor: pointer;">php wp-cli.phar --info</span>
</div>
<a href="#install" class="btn-zen">開始使用</a>
</div>
</section>
<section class="philosophy">
<div class="grid">
<div class="card">
<h2></h2>
<p>執行快如閃電,無需等待,外掛更新、資料匯入。</p>
</div>
<div class="card">
<h2></h2>
<p>輸入極簡指令,直達核心。摒棄繁雜介面更純粹。</p>
</div>
<div class="card">
<h2></h2>
<p>自動化腳本,批次處理。減少重複勞動隨風而去。</p>
</div>
</div>
</section>
<section id="install" class="install">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">萬物之源</span>
</div>
<div class="install-content">
<div class="tabs">
<button class="tab-btn active" data-group="install" data-tab="unix">UNIX</button>
<button class="tab-btn" data-group="install" data-tab="windows">WINDOWS</button>
</div>
<div id="unix-content" class="tab-content active" data-group="install">
<div class="step">
<div class="step-num">01</div>
<div class="step-detail">
<h4>下載 (Download)</h4>
<p>選擇離你最近的源下載 <code>wp-cli.phar</code> 檔案。以下自選其一。</p>
<div class="code-block-mini">
<span class="comment"># 推薦國內使用者使用鏡像源</span>
<span class="command">curl -O https://feicode.com/wp-cli/builds/raw/branch/gh-pages/phar/wp-cli.phar</span>
</div>
<div class="code-block-mini">
<span class="comment"># 加速短鏈</span>
<span class="command">curl -O wp-cli.cn/phar</span>
</div>
</div>
</div>
<div class="step">
<div class="step-num">02</div>
<div class="step-detail">
<h4>賦權 (Permission)</h4>
<p>賦予檔案可執行權限,使其成為可運行的程式。</p>
<div class="code-block-mini">
<span class="command">chmod +x wp-cli.phar</span>
</div>
</div>
</div>
<div class="step">
<div class="step-num">03</div>
<div class="step-detail">
<h4>歸位 (Move)</h4>
<p>將檔案移動到系統路徑,並重新命名為 <code>wp</code></p>
<div class="code-block-mini">
<span class="command">sudo mv wp-cli.phar /usr/local/bin/wp</span>
</div>
</div>
</div>
<div class="step">
<div class="step-num">04</div>
<div class="step-detail">
<h4>驗證 (Verify)</h4>
<p>確認安裝成功。</p>
<div class="code-block-mini">
<span class="command">wp --info</span>
</div>
</div>
</div>
</div>
<div id="windows-content" class="tab-content" data-group="install">
<div class="step">
<div class="step-num">01</div>
<div class="step-detail">
<h4>下載 (Download)</h4>
<p>下載 <code>wp-cli.phar</code> 到你的專案根目錄。</p>
<div class="code-block-mini">
<span class="command">curl -O https://feicode.com/wp-cli/builds/raw/branch/gh-pages/phar/wp-cli.phar</span>
</div>
</div>
</div>
<div class="step">
<div class="step-num">02</div>
<div class="step-detail">
<h4>設定 (Configure)</h4>
<p>在同一目錄下建立 <code>wp.bat</code> 檔案。</p>
<div class="code-block-mini">
<span class="command">echo @php "%~dp0wp-cli.phar" %* > wp.bat</span>
</div>
</div>
</div>
<div class="step">
<div class="step-num">03</div>
<div class="step-detail">
<h4>路徑 (Path)</h4>
<p>將該目錄添加到系統的環境變數 <code>PATH</code> 中。</p>
</div>
</div>
<div class="step">
<div class="step-num">04</div>
<div class="step-detail">
<h4>驗證 (Verify)</h4>
<p>打開新的命令列視窗驗證。</p>
<div class="code-block-mini">
<span class="command">wp --info</span>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="waza" class="waza">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">日常之修煉</span>
</div>
<div class="waza-content">
<input type="text" id="command-search" class="waza-search" placeholder="搜尋命令...">
<div class="tabs command-tabs">
<button class="tab-btn active" data-group="waza" data-tab="sys">系統</button>
<button class="tab-btn" data-group="waza" data-tab="content">內容</button>
<button class="tab-btn" data-group="waza" data-tab="ext">擴充</button>
<button class="tab-btn" data-group="waza" data-tab="manage">管理</button>
<button class="tab-btn" data-group="waza" data-tab="debug">除錯</button>
</div>
<!-- 系統 (System + DB + Adv) -->
<div id="sys-content" class="tab-content active" data-group="waza">
<div class="command-item">
<div class="command-desc">查看系統資訊</div>
<div class="code-line"><span class="prompt">$</span> wp --info</div>
</div>
<div class="command-item">
<div class="command-desc">檢查 WordPress 核心更新</div>
<div class="code-line"><span class="prompt">$</span> wp core check-update</div>
</div>
<div class="command-item">
<div class="command-desc">更新 WordPress 核心</div>
<div class="code-line"><span class="prompt">$</span> wp core update</div>
</div>
<div class="command-item">
<div class="command-desc">清理快取</div>
<div class="code-line"><span class="prompt">$</span> wp cache flush</div>
</div>
<div class="command-item">
<div class="command-desc">開啟維護模式</div>
<div class="code-line"><span class="prompt">$</span> wp maintenance-mode activate</div>
</div>
<div class="command-item">
<div class="command-desc">匯出資料庫</div>
<div class="code-line"><span class="prompt">$</span> wp db export backup.sql</div>
</div>
<div class="command-item">
<div class="command-desc">匯入資料庫</div>
<div class="code-line"><span class="prompt">$</span> wp db import backup.sql</div>
</div>
<div class="command-item">
<div class="command-desc">搜尋並替換 (支援序列化)</div>
<div class="code-line"><span class="prompt">$</span> wp search-replace 'old.com' 'new.com'</div>
</div>
<div class="command-item">
<div class="command-desc">最佳化資料庫表</div>
<div class="code-line"><span class="prompt">$</span> wp db optimize</div>
</div>
<div class="command-item">
<div class="command-desc">執行 PHP 程式碼</div>
<div class="code-line"><span class="prompt">$</span> wp eval 'echo "Hello WP";'</div>
</div>
<div class="command-item">
<div class="command-desc">互動式 Shell</div>
<div class="code-line"><span class="prompt">$</span> wp shell</div>
</div>
<div class="command-item">
<div class="command-desc">管理排程任務</div>
<div class="code-line"><span class="prompt">$</span> wp cron event list</div>
</div>
<div class="command-item">
<div class="command-desc">獲取選項值</div>
<div class="code-line"><span class="prompt">$</span> wp option get siteurl</div>
</div>
</div>
<!-- 內容 (Post + Media) -->
<div id="content-content" class="tab-content" data-group="waza">
<div class="command-item">
<div class="command-desc">建立新文章</div>
<div class="code-line"><span class="prompt">$</span> wp post create --post_title="Hello World" --post_status=publish</div>
</div>
<div class="command-item">
<div class="command-desc">列出最近發佈的文章</div>
<div class="code-line"><span class="prompt">$</span> wp post list --post_type=post --number=5</div>
</div>
<div class="command-item">
<div class="command-desc">生成測試資料</div>
<div class="code-line"><span class="prompt">$</span> wp post generate --count=10 --post_type=page</div>
</div>
<div class="command-item">
<div class="command-desc">批次刪除文章</div>
<div class="code-line"><span class="prompt">$</span> wp post delete $(wp post list --post_type=post --format=ids)</div>
</div>
<div class="command-item">
<div class="command-desc">匯入圖片</div>
<div class="code-line"><span class="prompt">$</span> wp media import ~/images/logo.png</div>
</div>
<div class="command-item">
<div class="command-desc">重新生成縮圖</div>
<div class="code-line"><span class="prompt">$</span> wp media regenerate --yes</div>
</div>
<div class="command-item">
<div class="command-desc">列出未使用的媒體檔案</div>
<div class="code-line"><span class="prompt">$</span> wp media list --post_parent=0</div>
</div>
</div>
<!-- 擴充 (Plugin + Theme) -->
<div id="ext-content" class="tab-content" data-group="waza">
<div class="command-item">
<div class="command-desc">安裝並啟用外掛</div>
<div class="code-line"><span class="prompt">$</span> wp plugin install woocommerce --activate</div>
</div>
<div class="command-item">
<div class="command-desc">更新所有外掛</div>
<div class="code-line"><span class="prompt">$</span> wp plugin update --all</div>
</div>
<div class="command-item">
<div class="command-desc">列出所有外掛狀態</div>
<div class="code-line"><span class="prompt">$</span> wp plugin list</div>
</div>
<div class="command-item">
<div class="command-desc">停用外掛</div>
<div class="code-line"><span class="prompt">$</span> wp plugin deactivate hello</div>
</div>
<div class="command-item">
<div class="command-desc">安裝佈景主題</div>
<div class="code-line"><span class="prompt">$</span> wp theme install twentytwentyone</div>
</div>
<div class="command-item">
<div class="command-desc">啟用佈景主題</div>
<div class="code-line"><span class="prompt">$</span> wp theme activate twentytwentyone</div>
</div>
<div class="command-item">
<div class="command-desc">生成子佈景主題</div>
<div class="code-line"><span class="prompt">$</span> wp scaffold child-theme my-child --parent_theme=twentytwentyone</div>
</div>
<div class="command-item">
<div class="command-desc">列出所有佈景主題</div>
<div class="code-line"><span class="prompt">$</span> wp theme list</div>
</div>
</div>
<!-- 管理 (User + Site) -->
<div id="manage-content" class="tab-content" data-group="waza">
<div class="command-item">
<div class="command-desc">建立新使用者</div>
<div class="code-line"><span class="prompt">$</span> wp user create bob bob@example.com --role=editor</div>
</div>
<div class="command-item">
<div class="command-desc">列出管理員使用者</div>
<div class="code-line"><span class="prompt">$</span> wp user list --role=administrator</div>
</div>
<div class="command-item">
<div class="command-desc">更新使用者密碼</div>
<div class="code-line"><span class="prompt">$</span> wp user update bob --user_pass=strongpassword</div>
</div>
<div class="command-item">
<div class="command-desc">管理使用者權限</div>
<div class="code-line"><span class="prompt">$</span> wp cap list administrator</div>
</div>
<div class="command-item">
<div class="command-desc">刪除使用者並重新分配文章</div>
<div class="code-line"><span class="prompt">$</span> wp user delete bob --reassign=1</div>
</div>
<div class="command-item">
<div class="command-desc">建立新網站 (多站點)</div>
<div class="code-line"><span class="prompt">$</span> wp site create --slug=subsite --title="Sub Site"</div>
</div>
<div class="command-item">
<div class="command-desc">列出所有網站</div>
<div class="code-line"><span class="prompt">$</span> wp site list</div>
</div>
</div>
<!-- 除錯 (Debug) -->
<div id="debug-content" class="tab-content" data-group="waza">
<div class="command-item">
<div class="command-desc">查看詳細設定資訊</div>
<div class="code-line"><span class="prompt">$</span> wp config list</div>
</div>
<div class="command-item">
<div class="command-desc">檢查資料庫狀態</div>
<div class="code-line"><span class="prompt">$</span> wp db check</div>
</div>
<div class="command-item">
<div class="command-desc">查看資料庫大小</div>
<div class="code-line"><span class="prompt">$</span> wp db size --human-readable</div>
</div>
<div class="command-item">
<div class="command-desc">列出當前運行的 Cron 事件</div>
<div class="code-line"><span class="prompt">$</span> wp cron event list</div>
</div>
<div class="command-item">
<div class="command-desc">立即運行所有 Cron 事件</div>
<div class="code-line"><span class="prompt">$</span> wp cron event run --due-now</div>
</div>
<div class="command-item">
<div class="command-desc">跳過外掛/佈景主題運行 (排錯模式)</div>
<div class="code-line"><span class="prompt">$</span> wp plugin list --skip-plugins --skip-themes</div>
</div>
<div class="command-item">
<div class="command-desc">重新生成重寫規則 (Fix 404)</div>
<div class="code-line"><span class="prompt">$</span> wp rewrite flush</div>
</div>
<div class="command-item">
<div class="command-desc">驗證 WordPress 核心檔案校驗和</div>
<div class="code-line"><span class="prompt">$</span> wp core verify-checksums</div>
</div>
</div>
</div>
</section>
<section id="ai" class="ai-section">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">未來之演進</span>
</div>
<div class="ai-content">
<p class="ai-intro">
當命令列遇上人工智慧WP-CLI 不再只是工具,而是你的智慧助手。
透過 AI 賦能,實現自然語言控制、程式碼自動生成與智慧故障診斷。
</p>
<div class="ai-demo-terminal" id="ai-demo-terminal">
<div class="terminal-header">
<span class="dot red"></span>
<span class="dot yellow"></span>
<span class="dot green"></span>
<span class="terminal-title">WP-CLI AI Assistant</span>
</div>
<div class="terminal-body" id="ai-terminal-body">
<!-- JS will populate this -->
<div class="terminal-line">
<span class="ai-prompt">AI @ wp-cli:~$</span>
<span class="typing-cursor"></span>
</div>
</div>
</div>
<div class="grid-ai">
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>自然語言互動</h3>
<p>告別繁瑣參數,直接告訴它你想做什麼。</p>
<div class="code-block-mini">
<span class="comment"># 範例 (需配合 AI 擴充)</span>
<span class="command">wp ai "幫我建立一個使用者名稱為 feibisi 的管理員"</span>
</div>
</div>
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>智慧程式碼生成</h3>
<p>自動生成外掛樣板程式碼、自訂文章類型註冊程式碼。</p>
<div class="code-block-mini">
<span class="comment"># 生成自訂文章類型</span>
<span class="command">wp scaffold post-type book --label="書籍"</span>
</div>
</div>
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>故障自動診斷</h3>
<p>智慧分析日誌,快速定位錯誤根源並給出修復建議。</p>
<div class="code-block-mini">
<span class="command">wp doctor check --all</span>
</div>
</div>
</div>
</div>
</section>
<section id="config" class="config-section">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">運籌於帷幄</span>
</div>
<div class="config-content">
<div class="config-intro">
<p>透過 <code>wp-cli.yml</code> 設定檔案,您可以定義全域參數、註冊命令別名,甚至管理遠端網站。</p>
</div>
<div class="tabs">
<button class="tab-btn active" data-group="config" data-tab="global">全域 (Global)</button>
<button class="tab-btn" data-group="config" data-tab="alias">別名 (Alias)</button>
</div>
<div id="global-content" class="tab-content active" data-group="config">
<div class="config-card">
<h3>全域設定</h3>
<p>一次設定,處處生效。省去重複輸入參數的煩惱。</p>
<div class="code-block-yml">
<div class="yml-title">wp-cli.yml</div>
<pre><code>path: web/wp
url: http://example.com
user: admin
disabled_commands:
- db drop
- plugin install</code></pre>
</div>
</div>
</div>
<div id="alias-content" class="tab-content" data-group="config">
<div class="config-card highlight">
<h3>遠端別名 (Aliases)</h3>
<p>在本地機器上,直接操控遠端伺服器的 WordPress 網站。</p>
<div class="code-block-yml">
<div class="yml-title">wp-cli.yml</div>
<pre><code>@prod:
ssh: user@prod-server/var/www/html
@dev:
ssh: user@dev-server/var/www/html</code></pre>
</div>
<div class="code-block-mini" style="margin-top: 1rem;">
<span class="comment"># 同步生產環境資料庫到本地</span>
<span class="command">wp db export - | wp @local db import -</span>
</div>
</div>
</div>
</div>
</section>
<section id="advanced" class="advanced-section">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">自動化之道</span>
</div>
<div class="advanced-content">
<p class="advanced-intro">
精通 WP-CLI 不僅僅是掌握單個命令,更在於將其融入自動化工作流。
這裡有一些進階的腳本與設定範例。
</p>
<div class="accordion">
<div class="accordion-item">
<button class="accordion-header">
<span>Shell 腳本:批次更新所有網站</span>
<span class="icon">+</span>
</button>
<div class="accordion-body">
<p>如果您管理著多個 WordPress 網站,可以編寫一個簡單的 Bash 腳本來遍歷目錄並更新所有網站。</p>
<div class="code-block-sh">
<pre><code>#!/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</code></pre>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header">
<span>System Cron替換低效的 WP-Cron</span>
<span class="icon">+</span>
</button>
<div class="accordion-body">
<p>WordPress 預設的 Cron 依賴頁面存取觸發,不僅不穩定還影響效能。建議禁用它,改用系統的 Crontab。</p>
<p>1. 在 <code>wp-config.php</code> 中禁用預設 Cron</p>
<div class="code-block-mini">
<span class="command">define( 'DISABLE_WP_CRON', true );</span>
</div>
<p>2. 在伺服器的 crontab 中添加任務(每分鐘執行一次):</p>
<div class="code-block-mini">
<span class="command">* * * * * php /path/to/wp-cli.phar cron event run --due-now --path=/var/www/html</span>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header">
<span>物件快取 (Object Cache)</span>
<span class="icon">+</span>
</button>
<div class="accordion-body">
<p>配合 Redis 或 MemcachedWP-CLI 可以幫助您管理物件快取,極大提升動態頁面載入速度。</p>
<div class="code-block-mini">
<span class="comment"># 查看快取狀態</span>
<span class="command">wp cache type</span>
<span class="comment"># 清除所有快取</span>
<span class="command">wp cache flush</span>
<span class="comment"># 獲取特定快取鍵值 (除錯用)</span>
<span class="command">wp cache get my_key my_group</span>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header">
<span>多站點 (Multisite) 批次操作</span>
<span class="icon">+</span>
</button>
<div class="accordion-body">
<p>在 WordPress 多站點網路中,逐個站點執行命令非常繁瑣。結合 <code>xargs</code> 可以實現一行程式碼管理整個網路。</p>
<div class="code-block-mini">
<span class="comment"># 對網路中的所有站點啟用 Akismet 外掛</span>
<span class="command">wp site list --field=url | xargs -n1 -I % wp plugin activate akismet --url=%</span>
</div>
<div class="code-block-mini">
<span class="comment"># 批次更新所有子站點的資料庫結構</span>
<span class="command">wp site list --field=url | xargs -n1 -I % wp core update-db --url=%</span>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header">
<span>效能分析 (Profiling)</span>
<span class="icon">+</span>
</button>
<div class="accordion-body">
<p>使用 <code>profile</code> 擴充包,您可以深入分析 WordPress 啟動過程中的效能瓶頸,精確到毫秒級的鉤子 (Hook) 執行時間。</p>
<div class="code-block-mini">
<span class="comment"># 1. 安裝擴充包</span>
<span class="command">wp package install wp-cli/profile-command</span>
<span class="comment"># 2. 分析頁面載入的各個階段</span>
<span class="command">wp profile stage --all</span>
<span class="comment"># 3. 找出最慢的 10 個鉤子</span>
<span class="command">wp profile hook --all --spotlight --count=10</span>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header">
<span>CI/CD 整合 (GitHub Actions)</span>
<span class="icon">+</span>
</button>
<div class="accordion-body">
<p>將 WP-CLI 整合到自動化部署流程中。以下是一個 GitHub Actions 的範例,用於在部署前檢查程式碼標準。</p>
<div class="code-block-yml">
<div class="yml-title">.github/workflows/main.yml</div>
<pre><code>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</code></pre>
</div>
</div>
</div>
<div class="accordion-item">
<button class="accordion-header">
<span>自訂命令 (Custom Command)</span>
<span class="icon">+</span>
</button>
<div class="accordion-body">
<p>只需幾行 PHP 程式碼,就能讓 WP-CLI 為你所用。建立一個簡單的命令來輸出 "Hello World"。</p>
<div class="code-block-sh">
<pre><code>// 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</code></pre>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="cases" class="cases-section">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">實戰之演練</span>
</div>
<div class="cases-content">
<p class="cases-intro">
理論終須實踐檢驗。以下是兩個真實的維運場景,展示 WP-CLI 如何化繁為簡,解決棘手問題。
</p>
<div class="tabs">
<button class="tab-btn active" data-group="cases" data-tab="rescue">救援 (Rescue)</button>
<button class="tab-btn" data-group="cases" data-tab="migrate">遷移 (Migrate)</button>
<button class="tab-btn" data-group="cases" data-tab="audit">審計 (Audit)</button>
</div>
<div id="rescue-content" class="tab-content active" data-group="cases">
<div class="case-card">
<div class="case-header">
<h3>場景一:網站被駭,快速還原</h3>
<span class="case-tag danger">緊急</span>
</div>
<p class="case-desc">某天早上,你發現網站被植入了惡意程式碼,且無法登入後台。此時 WP-CLI 是你的救命稻草。</p>
<div class="step-list">
<div class="case-step">
<span class="step-icon">1</span>
<div class="step-text">
<strong>驗證核心檔案完整性</strong>
<p>快速找出被篡改的核心檔案。</p>
<div class="code-block-mini">
<span class="command">wp core verify-checksums</span>
</div>
</div>
</div>
<div class="case-step">
<span class="step-icon">2</span>
<div class="step-text">
<strong>強制重裝核心</strong>
<p>不刪除 `wp-content`,僅覆蓋核心檔案,清除後門。</p>
<div class="code-block-mini">
<span class="command">wp core download --force --skip-content</span>
</div>
</div>
</div>
<div class="case-step">
<span class="step-icon">3</span>
<div class="step-text">
<strong>檢查未授權使用者</strong>
<p>列出管理員,發現可疑帳號立即刪除。</p>
<div class="code-block-mini">
<span class="command">wp user list --role=administrator</span>
<span class="command">wp user delete hacker --reassign=1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="migrate-content" class="tab-content" data-group="cases">
<div class="case-card">
<div class="case-header">
<h3>場景二:數萬篇文章批次修改</h3>
<span class="case-tag success">最佳化</span>
</div>
<p class="case-desc">你需要將所有文章中的舊網域 "old-site.com" 替換為 "new-site.com",且不能破壞序列化資料。</p>
<div class="step-list">
<div class="case-step">
<span class="step-icon">1</span>
<div class="step-text">
<strong>預演 (Dry Run)</strong>
<p>先看看會影響多少行資料,確保心中有數。</p>
<div class="code-block-mini">
<span class="command">wp search-replace 'old-site.com' 'new-site.com' --dry-run</span>
</div>
</div>
</div>
<div class="case-step">
<span class="step-icon">2</span>
<div class="step-text">
<strong>執行替換並匯出備份</strong>
<p>為了安全,建議先匯出 SQL再執行替換。</p>
<div class="code-block-mini">
<span class="command">wp db export before_replace.sql</span>
<span class="command">wp search-replace 'old-site.com' 'new-site.com'</span>
</div>
</div>
</div>
<div class="case-step">
<span class="step-icon">3</span>
<div class="step-text">
<strong>清理快取</strong>
<p>確保前台立即生效。</p>
<div class="code-block-mini">
<span class="command">wp cache flush</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="audit-content" class="tab-content" data-group="cases">
<div class="case-card">
<div class="case-header">
<h3>場景三:網站健康與安全審計</h3>
<span class="case-tag">日常</span>
</div>
<p class="case-desc">未雨綢繆勝過亡羊補牢。建立一套自動化的審計流程,定期檢查網站是否存在潛在風險。</p>
<div class="step-list">
<div class="case-step">
<span class="step-icon">1</span>
<div class="step-text">
<strong>檢查長期未更新的外掛</strong>
<p>過期的外掛往往是安全漏洞的重災區。</p>
<div class="code-block-mini">
<span class="command">wp plugin list --update=available</span>
</div>
</div>
</div>
<div class="case-step">
<span class="step-icon">2</span>
<div class="step-text">
<strong>驗證所有核心檔案</strong>
<p>確保沒有檔案被偷偷修改。</p>
<div class="code-block-mini">
<span class="command">wp core verify-checksums</span>
</div>
</div>
</div>
<div class="case-step">
<span class="step-icon">3</span>
<div class="step-text">
<strong>列出所有管理員</strong>
<p>定期審查擁有最高權限的帳戶列表。</p>
<div class="code-block-mini">
<span class="command">wp user list --role=administrator --fields=ID,user_login,user_email,registered</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="faq" class="faq-section">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">疑惑之微光</span>
</div>
<div class="faq-content">
<div class="faq-item">
<button class="faq-question">
<span>運行命令時提示 "Allow memory size of... exhausted"</span>
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>這是 PHP 記憶體限制導致的。您可以臨時增加記憶體限制運行命令:</p>
<div class="code-block-mini">
<span class="command">php -d memory_limit=512M $(which wp) package list</span>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
<span>提示 "Error: YIKES! It looks like you're running this as root"</span>
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>出於安全考慮,不建議以 root 身份運行 WP-CLI。如果必須這樣做請添加 <code>--allow-root</code> 參數:</p>
<div class="code-block-mini">
<span class="command">wp plugin list --allow-root</span>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
<span>如何除錯 "白屏" 或未知報錯?</span>
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>您可以使用 <code>--debug</code> 參數查看詳細的執行日誌。如果懷疑是外掛衝突,可以添加 <code>--skip-plugins</code> 參數暫時禁用所有外掛運行命令。</p>
<div class="code-block-mini">
<span class="command">wp plugin list --debug</span>
<span class="command">wp theme list --skip-plugins --skip-themes</span>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
<span>search-replace 操作是否安全?</span>
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>非常安全。WP-CLI 能夠智慧處理 PHP 序列化資料Serialized Data這是直接使用 SQL 語句無法做到的。建議在操作前使用 <code>--dry-run</code> 進行預演。</p>
<div class="code-block-mini">
<span class="command">wp search-replace 'http://' 'https://' --dry-run</span>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
<span>如何更新 WP-CLI 本身?</span>
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>WP-CLI 提供了自更新命令,您可以一鍵升級到最新穩定版:</p>
<div class="code-block-mini">
<span class="command">wp cli update</span>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
<span>如何管理多個 WordPress 版本的 PHP 環境?</span>
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>您可以直接使用指定版本的 PHP 可執行檔案來運行 WP-CLI Phar 包:</p>
<div class="code-block-mini">
<span class="command">/usr/bin/php7.4 wp-cli.phar plugin list</span>
</div>
</div>
</div>
<div class="faq-item">
<button class="faq-question">
<span>遇到 "Error establishing a database connection"</span>
<span class="icon">+</span>
</button>
<div class="faq-answer">
<p>請首先檢查 <code>wp-config.php</code> 中的資料庫憑證是否正確。您也可以嘗試使用 <code>wp db check</code> 命令來診斷資料庫連線問題。</p>
</div>
</div>
</div>
</section>
<section id="extend" class="extend">
<div class="section-title-vertical">
<h2></h2>
<span class="subtitle-vertical">生態之延伸</span>
</div>
<div class="extend-content">
<p class="extend-intro">WP-CLI 的力量不僅於此。透過包管理器,您可以安裝社群貢獻的命令,甚至編寫自己的擴充。</p>
<div class="tabs">
<button class="tab-btn active" data-group="extend" data-tab="tools">工具 (Tools)</button>
<button class="tab-btn" data-group="extend" data-tab="dev">開發 (Dev)</button>
</div>
<div id="tools-content" class="tab-content active" data-group="extend">
<div class="package-grid">
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>wp doctor</h3>
<p>為您的 WordPress 進行全面體檢,發現潛在設定問題。</p>
<div class="code-block-mini">
<span class="command">wp package install wp-cli/doctor-command</span>
</div>
</div>
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>wp profile</h3>
<p>剖析頁面載入過程,精確定位效能瓶頸(慢查詢、鉤子耗時)。</p>
<div class="code-block-mini">
<span class="command">wp package install wp-cli/profile-command</span>
</div>
</div>
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>wp shell</h3>
<p>內建的 REPL 環境,像 Python Shell 一樣即時執行 PHP 程式碼。</p>
<div class="code-block-mini">
<span class="command">wp shell</span>
</div>
</div>
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>wp i18n</h3>
<p>國際化工具集。生成 POT 檔案、轉換 PO/MO 檔案。</p>
<div class="code-block-mini">
<span class="command">wp i18n make-pot . languages/plugin.pot</span>
</div>
</div>
</div>
</div>
<div id="dev-content" class="tab-content" data-group="extend">
<div class="package-grid">
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>腳手架 (Scaffold)</h3>
<p>快速生成標準化的 WP-CLI 命令包結構,開始您的擴充開發之旅。</p>
<div class="code-block-mini">
<span class="command">wp scaffold package my-command</span>
</div>
</div>
<div class="card-ai">
<div class="card-icon-zen"></div>
<h3>單元測試</h3>
<p>為您的外掛或佈景主題生成 PHPUnit 測試檔案。</p>
<div class="code-block-mini">
<span class="command">wp scaffold plugin-tests my-plugin</span>
</div>
</div>
</div>
</div>
<div class="community-link">
<a href="https://wp-cli.org/package-index/" target="_blank" class="btn-text">
<span class="text">瀏覽更多擴充包</span>
<span class="icon"></span>
</a>
</div>
</div>
</section>
<section id="requirements" class="requirements">
<div class="zen-circle">
<span class="req-title"></span>
</div>
<div class="req-grid">
<div class="req-item">
<span class="req-label">PHP</span>
<span class="req-value">5.6+</span>
</div>
<div class="req-divider"></div>
<div class="req-item">
<span class="req-label">WordPress</span>
<span class="req-value">3.7+</span>
</div>
<div class="req-divider"></div>
<div class="req-item">
<span class="req-label">System</span>
<span class="req-value">UNIX-like</span>
</div>
</div>
<p class="req-note">亦可隨風潛入夜:<code>composer require wp-cli/wp-cli-bundle</code></p>
</section>
</main>
<footer class="site-footer">
<div class="footer-grid">
<!-- Brand / Slogan -->
<div class="footer-brand">
<div class="footer-logo">
<img src="./wp-cli-logo.png" alt="WP-CLI Logo">
</div>
<p class="footer-desc">無需瀏覽器,指尖流轉程式碼。<br>掌控 WordPress 之一切。</p>
<div class="zen-mark-large">文派</div>
</div>
<!-- Navigation Links -->
<div class="footer-nav">
<div class="nav-group">
<h4>探索</h4>
<a href="#install">安裝指南</a>
<a href="#waza">命令技巧</a>
<a href="#ai">智慧助手</a>
<a href="#config">高級設定</a>
</div>
<div class="nav-group">
<h4>資源</h4>
<a href="https://make.wordpress.org/cli/handbook/" target="_blank">官方手冊</a>
<a href="https://developer.wordpress.org/cli/commands/" target="_blank">命令參考</a>
<a href="https://wp-cli.org/package-index/" target="_blank">擴充包庫</a>
</div>
<div class="nav-group">
<h4>社群</h4>
<a href="https://feicode.com/wp-cli" target="_blank">菲碼源庫 ↗</a>
<a href="https://wptea.com/" target="_blank">文派茶館 ↗</a>
<a href="https://meta.cyberforums.com/" target="_blank">賽博論壇 ↗</a>
</div>
</div>
<!-- Newsletter / Action -->
<div class="footer-action">
<h4>關注我們</h4>
<p>獲取最新 WP-CLI 技巧與 WordPress 資訊。</p>
<div class="footer-qr-container">
<div class="footer-qr">
<img src="./wp_wx.png" alt="文派公眾號" class="qr-img">
<span class="qr-caption">文派公眾號</span>
</div>
<div class="footer-qr">
<img src="./wxd_wx.png" alt="薇曉朵公眾號" class="qr-img">
<span class="qr-caption">薇曉朵公眾號</span>
</div>
</div>
</div>
</div>
<div class="footer-bottom">
<div class="copyright">
&copy; 2025 WP-CLI. 文派(廣州)科技有限公司.
</div>
<div class="footer-meta">
<a href="https://wenpai.org/about/privacy/" target="_blank">隱私政策</a>
<span class="separator"></span>
<a href="https://wenpai.org/" target="_blank">WenPai.org</a>
</div>
</div>
</footer>
</div>
<button id="back-to-top" class="btn-icon fixed-btn" aria-label="返回頂部">
<span></span>
</button>
<script src="./script.js"></script>
</body>
</html>