引言
在当今数字化时代,WordPress 已成为全球最受欢迎的内容管理系统(CMS)之一,支撑着数百万个网站的运行。无论是个人博客、企业官网,还是电商平台,WordPress 都凭借其灵活性和强大的扩展性赢得了广泛的用户基础。然而,随着网站规模的扩大及功能的复杂化,传统后台管理方式可能变得繁琐低效;新手更可能因错误操作等原因,无法通过常规方式进入后台管理界面进行故障排除。
在这种情况下,WordPress 命令行工具(WP-CLI)应运而生,它不仅提升了管理效率,还在网站故障排除方面展现出显著优势。通过 WP-CLI,用户可以在不登录后台的情况下,快速诊断和解决网站问题。
本文将详细介绍 WP-CLI 的安装与使用方法,帮助你充分利用这一工具,提升 WordPress 网站的管理效率和故障排除能力。
什么是WP-CLI
WP-CLI 是一款用于管理 WordPress 的命令行界面,无需浏览器即可完成插件更新、多站点设置等操作。
WP-CLI 能够实现的常见操作类型丰富多样,主要包括以下几个方面:
- 站点管理:创建新的 WordPress 站点、更新站点配置、迁移站点等。例如,通过简单的命令,用户可以快速创建一个全新的 WordPress 站点,并指定数据库信息、站点标题等参数。
- 插件管理:安装、更新、激活、禁用和删除插件。WP-CLI 提供了便捷的命令来管理插件,用户可以轻松地搜索并安装所需的插件,或者批量更新所有插件,也可以在无法进入后台的情况下停用发生故障的插件,确保网站功能的稳定性和安全性。
- 主题管理:安装、切换、更新和删除主题。通过 WP-CLI,用户可以快速切换网站的主题,或者安装最新的主题版本,为网站带来全新的视觉效果。
- 用户管理:创建、更新、删除用户,以及修改用户角色和权限。这使得网站管理员能够更加灵活地管理网站的用户群体,确保网站的安全性和权限控制。
- 数据备份与恢复:备份和恢复数据库,确保网站数据的安全性。在数据丢失或损坏的情况下,通过 WP-CLI 可以快速恢复数据库,减少数据损失的风险。
- 故障排除:当WordPress出现问题时可进行故障分析与排除,保证你的网站可以正确运行。
WP-CLI 的这些功能不仅提高了操作的效率,还为 WordPress 网站的管理和开发带来了更大的灵活性和便利性。在接下来的章节中,我们将详细介绍 WP-CLI 的安装方法以及如何使用这些功能来管理 WordPress 网站。
安装WP-CLI
安装环境
安装前请检查自己网站的运行环境是否符合如下要求:
- UNIX 环境:OS X、Linux、FreeBSD、Cygwin 等,部分功能在 Windows 中将受到限制。
- PHP 版本:PHP 5.6 或更高版本。
- WordPress 版本:WordPress 3.7 或更高版本,较旧版本在功能上可能会有所减少。
WP-CLI本身需要PHP的支持,并且PHP执行环境最好与WordPress运行时所配置的PHP环境保持一致,因此针对不同的PHP安装情形,我们将介绍对应的安装方法。
PHP安装在主机环境中
此部分内容适用于使用系统包管理器或者源码编译的方式将PHP直接安装到主机系统环境内的用户,你通常可以在主机命令行内直接使用 php
命令。可以通过 php -v
查看你所安装的PHP版本。
user@localhost:~$ php -v
PHP 8.4.2 (cli) (built: Dec 24 2024 06:04:41) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.2, Copyright (c) Zend Technologies
with Zend OPcache v8.4.2, Copyright (c), by Zend Technologies
user@localhost:~$
1. 下载Phar文件
使用以下命令下载Phar文件:
#使用curl下载
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
#使用wget下载
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
提示
文件位于Github素材服务器中,如若访问失败,请使用镜像站或使用代理进行访问
2. 验证下载的Phar文件
执行以下命令,应该能返回WP-CLI工具的一些基本信息:
php wp-cli.phar --info
3. 添加执行权限并移动到系统目录中
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
4. 确认安装成功
执行 wp --info
命令,应该有类似于如下输出:
user@localhost:~$ wp --info
OS: Linux 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
Shell: /bin/bash
PHP binary: /usr/bin/php8.4
PHP version: 8.4.2
php.ini used: /etc/php/8.4/cli/php.ini
MySQL binary: /usr/bin/mysql
MySQL version: mysql Ver 8.0.40-0ubuntu for Linux on x86_64 ((Ubuntu))
SQL modes: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /home/user
WP-CLI packages dir:
WP-CLI cache dir: /home/user/.wp-cli/cache
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.11.0
user@localhost:~$
PHP位于容器环境中(Docker)
1. 进入容器shell
我们需要进入对应容器的shell环境中执行操作:
docker exec -it <容器名称或ID> /bin/sh
1Panel用户可以按下图操作连接至容器终端


2. 下载与验证Phar文件
#使用curl下载
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
#使用wget下载
wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
#验证Phar文件
php wp-cli.phar --info
3. 添加执行权限
chmod +x wp-cli.phar
mv wp-cli.phar wp
本例中文件被放置在容器中的 /root/
内,之后都将通过 /root/wp
访问命令,如果你自定义了安装位置,请自行替换。
WP-CLI的基本使用
WP-CLI 的目标是为网站管理员提供完整的替代方案,因此你可能想在 WordPress 管理后台中执行的任何操作,几乎都有等效的 WP-CLI 命令。由于篇幅限制,本文将重点介绍使用WP-CLI进行主题与插件的管理,如果你需要更多命令的说明,请参考官方文档(https://make.wordpress.org/cli/handbook)
用前注意
WP-CLI将基于终端当前的工作目录展开工作,因此正式操作前请先把终端的工作目录更改为网站的根目录,你可以参考如下命令,具体路径以你服务器实际情况为准。
#使用主机环境直接建站的路径多为:
cd /var/www/html/
#使用1Panel内的PHP容器环境建站的多为:
cd /www/sites/example.com/index/
#使用宝塔建站的多为:
cd /wwwroot/example.com/
如果你的PHP直接安装在主机环境中,官方建议使用www-data的身份执行WP-CLI(你的PHP与Nginx或其他Web服务应该都以www-data的身份执行),因此切换到站点目录下后,接下来你可以用 sudo -u www-data wp <command>
来以www-data的身份执行WP-CLI命令。
如果你PHP运行在容器中,使用上一节的教程配置好后,你需要用绝对路径调用WP-CLI且应该加上 --allow-root
的参数,默认情况下不允许root直接调用WP-CLI。你的调用将类似于 /root/wp --allow-root <command>
。
为了节约篇幅,下文将直接使用 wp <command>
指代命令调用,请自行替换为适合自己的命令调用。
(一)站点管理
1. 创建新站点
通过 WP-CLI,可以快速创建新的 WordPress 站点。以下是一个示例命令,用于创建一个新站点并指定数据库信息和站点标题:
wp core install --url=example.com --title="My New Site" --admin_user=admin --admin_password=password --admin_email=admin@example.com
2. 更新站点
使用以下命令可以更新 WordPress 核心:
wp core update
(二)插件管理
1. 安装插件
安装插件非常简单。以下命令用于安装插件:
wp plugin install plugin-name
如果不清楚要安装的插件的具体名称,可以从WordPress官网上获得,例如 经典编辑器 的官方页面为 https://wordpress.org/plugins/classic-editor/
,那么安装是应用的名称就是 classic-editor
。
也可以使用WP-CLI搜索插件:
wp plugin search classic

使用第二列 slug
中的名称安装你想要的插件。
当然也可以可以使用URL安装自定义插件:
wp plugin install http://example.com/extension_file.zip
2. 更新插件
更新插件可以确保插件的最新功能和安全补丁。以下命令用于更新插件:
#更新指定插件
wp plugin update plugin-name
#更新所有插件
wp plugin update --all
3. 管理插件
以下命令可以帮助你管理已安装的插件:
命令 | 说明 |
wp plugin list | 列出已安装插件 |
wp plugin install <插件名> | 安装指定插件 |
wp plugin search <关键字> | 搜索插件 |
wp plugin activate <插件名> | 启用指定插件 |
wp plugin update <插件名> | 升级指定插件 |
wp plugin deactivate <插件名> | 禁用指定插件 |
wp plugin uninstall <插件名> | 卸载指定插件 |
(三)主题管理
1. 安装主题
与插件管理类似,参考如下表格
命令 | 说明 |
wp theme list | 列出已安装主题 |
wp theme install <插件名> | 安装指定主题 |
wp theme search <关键字> | 搜索主题 |
wp theme activate <插件名> | 启用指定主题 |
wp theme update <插件名> | 升级指定主题 |
wp theme status <插件名> | 获取指定主题信息 |
wp theme delete <插件名> | 卸载指定主题 |
(四)用户管理
1. 创建用户
创建新用户可以为网站添加新的作者或管理员。以下命令用于创建一个新用户:
wp user create john.doe john.doe@example.com --role=author --user_pass=password
2. 更新用户信息
更新用户信息可以修改用户的用户名、邮箱或密码。以下命令用于更新用户的邮箱:
wp user update 1 --user_email=new.email@example.com
3. 管理用户
你还可能用到下面的命令:
#列出所有用户
wp user list
#删除一个用户
wp user delete user-name
(五)数据备份与恢复
1. 备份数据库
备份数据库是确保网站数据安全的重要步骤。以下命令用于备份数据库:
wp db export backup.sql
2. 恢复数据库
在数据丢失或损坏的情况下,可以使用备份文件恢复数据库。以下命令用于从备份文件恢复数据库:
wp db import backup.sql
通过以上常见操作,你可以快速上手 WP-CLI,提升 WordPress 网站的管理效率和故障排除能力。
(六)故障排除
1. 维护模式
查看维护模式状态
$ wp maintenance-mode status
Maintenance mode is not active.
启用维护模式
$ wp maintenance-mode activate
Enabling Maintenance mode...
Success: Activated Maintenance mode.
禁用维护模式
$ wp maintenance-mode deactivate
Disabling Maintenance mode...
Success: Deactivated Maintenance mode.
2. 确定插件与主题冲突
新手最容易出现的故障就是插件与主题的冲突,并且有时候还可能导致你无法进入后台,这时候就可以用WP-CLI进行故障分析与排除。
1. 跳过插件和主题执行WP-CLI
首先,尝试在不加载任何插件或主题的情况下运行WP-CLI命令。这可以通过 --skip-plugins
和 --skip-themes
参数来实现。如果在这种情况下WP-CLI能够正常运行,则说明问题是由于某个插件或当前激活的主题引起的。
wp --skip-plugins --skip-themes
如果上述命令成功执行,那么问题确实是由插件或主题导致的。
2. 检查是否是活动主题引起的问题
接下来,可以单独跳过主题来测试WP-CLI是否能正常加载。这样可以帮助确定问题是否来源于当前使用的主题。
wp --skip-themes
如果这个命令也成功了,那么我们可以排除主题的问题,将焦点转向插件。
3. 检查是否是某个活动插件引起的问题
最后,逐一排查每个活动插件以找出哪个插件阻止了WP-CLI的完整执行。一种方法是手动为每个活动插件添加 --skip-plugins=<plugin-name>
参数并依次测试;另一种更高效的方法是使用 xargs
命令来自动化这个过程。
例如,要跳过Akismet插件,你可以这样做:
wp --skip-plugins=akismet
对于所有活动插件,可以使用以下命令一次性测试所有插件:
wp plugin list --field=name --status=active --skip-plugins | xargs -n1 -I % sh -c 'echo "Testing: %"; wp --skip-plugins=% plugin get % --field=name'
这条命令的作用是列出所有处于活动状态的插件名称,并对每个插件执行带有 --skip-plugins
参数的WP-CLI命令。它会输出正在测试的插件名以及该插件的信息(如果命令成功)。如果某个插件引起了问题,对应的命令将会失败或者表现出异常行为。
通过这种方法,您可以有效地识别出哪个插件或主题与WP-CLI存在兼容性问题,并采取适当的措施解决这个问题,比如更新插件、切换到不同的主题,或是联系插件/主题开发者获取帮助。
WP-CLI更多操作
你也可以为WP-CLI注册自己的命令,但这不在本文介绍范围,请移步官方文档。
WebP 是一种由Google开发的图像格式,旨在提供更高效的图像压缩。它支持有损和无损压缩,并且可以显著减小文件大小,同时保持高质量的图像效果。
如果我们在建站初期上传了很多图片,那么要将他们全部手动转换成WebP是个很麻烦的过程,因此我们可以借助 Plus WebP or AVIF
插件(插件页面)来帮助我们转换。该插件的后台界面非常简单易用,但对于大量的图片处理,官方也推荐我们使用WP-CLI进行处理。
#安装 Plus WebP or AVIF 插件
wp plugin install plus-webp
#批量转换图片为WebP格式并将所有文章中的图片替换为新链接
wp pluswebpavif webp --quality=100 --replace=true --types=image/png,image/bmp,image/jpeg
##具体参数参考官方帮助文档
结语
通过本文的介绍,我们详细探讨了 WordPress 命令行工具(WP-CLI)的安装与使用方法。从安装前提到具体的操作步骤,再到常见操作的示例,我们希望为你提供了一个全面的指南,帮助你更好地管理和维护 WordPress 网站。
WP-CLI 作为一个强大的工具,不仅能够提升日常管理的效率,还能在网站故障排除时发挥关键作用。通过命令行界面,你可以快速执行各种操作,无需登录后台,大大节省了时间和精力。
在使用 WP-CLI 时,务必注意备份数据、管理权限、确保环境兼容性,并在正确的站点目录中执行命令。这些注意事项将帮助你避免常见的错误,确保操作的顺利进行。
如果你希望进一步学习和探索 WP-CLI 的更多功能,可以参考官方文档,或者与其他开发者和管理员交流经验。通过不断学习和实践,你将能够充分利用 WP-CLI 的强大功能,提升你的 WordPress 网站管理技能。
希望本文对你有所帮助,祝你在 WordPress 网站管理的道路上越走越远!
除非注明,否则均为天远日记原创文章,转载必须以链接形式标明本文链接
Comments 2 条评论
Wow, amazing blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your web site is wonderful, as well as the content!
@charlamagana Actually this website has only been set up for 3 months. I am still working hard to write more posts on it.