文派命令行接口

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