# 用 WP-CLI 管理站点

WP-CLI 在命令行管理 WordPress，适合批量维护和自动化。执行目录、运行用户和数据库目标必须确认。

更新日期：2026-09-16

规范地址：https://stock.iftalking.com/guides/wordpress-cli/

## 1. WP-CLI 适合批量和可重复操作

WP-CLI 可以查询 WordPress 状态、管理插件主题、导出数据库和执行迁移替换。它不是一个独立后台，需要在正确的 WordPress 安装目录中运行，并使用与网站兼容的 PHP。

先从 WP-CLI 官方安装文档获取当前安装方式，核对下载与校验要求。不要把第三方脚本作为 root 执行；安装后先查看环境。

```bash
wp --info
php -v
pwd
```

## 2. 先做只读查询确认站点

切到站点根目录，或显式使用 `--path=/实际/站点路径`。以站点文件所属用户运行，避免为了绕过权限提示长期使用 `--allow-root`。

```bash
wp core version
wp option get home
wp option get siteurl
wp plugin list
wp theme list
```

home/siteurl 应对应你要管理的站点。多站点环境还需要指定目标 URL。无法连接数据库时，先检查配置与运行环境，不能盲目在当前目录执行安装命令。

## 3. 安装、更新插件前记录当前版本

```bash
wp plugin list --fields=name,status,version,update
wp plugin update 插件目录名 --dry-run
```

这里的插件目录名需要替换为列表中的真实 slug。先在测试站验证，再备份生产站并更新指定插件。更新全部插件虽然方便，但故障时较难定位，尤其不适合同时跨多个大版本。

安装插件可使用 `wp plugin install 官方插件slug`，确认来源后再 activate。商业插件按发布者的授权和更新方式处理，不能从不明下载包安装。

## 4. 数据库导出与替换先预演

```bash
wp db export /home/deploy/wordpress-backup.sql
wp search-replace 'https://old.example.com' 'https://new.example.com' --all-tables-with-prefix --skip-columns=guid --dry-run
```

导出位置应在网站公开目录外，限制权限并传到另一处。替换会处理 WordPress 常见序列化数据，但仍要核对表范围、前缀和对象类型；确认预演后才执行实际替换。

数据库导入、用户删除和重置站点都属于会改变数据的操作，不应把它们混进一般“检查脚本”。命令自动化时记录退出状态，并在失败时停止后续写操作。

## 5. 排查 PHP 和权限问题

CLI 与 PHP-FPM 的扩展、内存和配置可能不同。WP-CLI 报缺扩展时，查看 `php --ini` 和 `php -m`；网站正常不代表命令行环境一样。必要时使用明确的 PHP 二进制路径运行。

插件导致命令无法启动时，可按官方说明使用 `--skip-plugins` 或 `--skip-themes` 做有限排查，但这不一定跳过 mu-plugins，也不能当作正常业务验证。

## 6. 命令完成后回到网页验收

![通过真实后台核对插件状态与更新结果](https://stock.iftalking.com/tutorial-media/wordpress-plugins.png)

*图示说明：WordPress 官方 Playground 演示环境实拍（2026-09-16，界面显示版本 7.1）。用于对照后台操作，不是服务商控制面板或正式业务数据。*

更新后测试文章、后台保存、上传和插件功能，查看错误日志。自动化脚本中使用完整路径、合适用户和受限凭据，参见[计划任务](https://stock.iftalking.com/guides/time-cron/)。迁移的完整流程见[WordPress 搬家](https://stock.iftalking.com/guides/wordpress-migration/)。


## 完成后检查

不要为了省事长期以 root 加 --allow-root 运行所有站点维护命令。

## 参考资料

- [make.wordpress.org · 项目文档](https://make.wordpress.org/cli/handbook/)
- [WordPress 开发与运维手册](https://developer.wordpress.org/playground/)
