pages/index.html
2025-12-09 12:50:22 +08:00

1107 lines
62 KiB
HTML
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-CN">
<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" class="active"></a>
<span>/</span>
<a href="./zh-tw.html"></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>