WP-CLI The command line interface for WordPress

WP-CLIWordPress 的命令行接口。无需使用浏览器,你即可更新插件、配置多站点安装以及完成更多操作。

持续维护由以下机构赞助:

Automattic Bluehost Pantheon SiteGround WP Engine Cloudways

当前稳定版本为 2.12.0。获取公告可关注 Twitter 上的 @wpcli订阅邮件更新。前往路线图查看未来版本的规划概览。

Testing Average time to resolve an issue Percentage of issues still open

快速链接:使用 | 安装 | 支持 | 扩展 | 贡献 | 致谢

使用

WP-CLI 为许多你可能在 WordPress 管理后台执行的操作提供了命令行界面。例如,wp plugin install --activate文档)可以让你安装并激活一个 WordPress 插件:

$ wp plugin install user-switching --activate
Installing User Switching (1.0.9)
Downloading installation package from https://downloads.wordpress.org/plugin/user-switching.1.0.9.zip...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Activating 'user-switching'...
Plugin 'user-switching' activated.
Success: Installed 1 of 1 plugins.

WP-CLI 也包含许多你无法在后台直接完成的命令。例如,wp transient delete --all文档)可以删除一个或所有 transient(临时缓存):

$ wp transient delete --all
Success: 34 transients deleted from the database.

如需更完整的使用介绍,请阅读快速入门指南。或者,查看shell friends学习常用的命令行工具。

已经熟悉基础?前往完整命令列表获取关于管理主题与插件、数据导入导出、执行数据库搜索替换等的详细信息。

安装

对于大多数用户,我们推荐通过下载 Phar 文件的方式安装。必要时也可以参阅其它安装方法ComposerHomebrewDocker)。

在安装 WP-CLI 之前,请确保你的环境满足以下最低要求:

确认满足要求后,使用 wgetcurl 下载 wp-cli.phar 文件:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

接着,检查 Phar 文件以确认其是否可用:

php wp-cli.phar --info

若希望在命令行中通过 wp 使用 WP-CLI,请将该文件设为可执行并移动到 PATH 中的某个位置。例如:

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

如果 WP-CLI 安装成功,运行 wp --info 应看到类似如下的输出:

$ wp --info
OS:     Linux 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64
Shell:  /usr/bin/zsh
PHP binary:     /usr/bin/php8.1
PHP version:    8.1.0
php.ini used:   /etc/php/8.1/cli/php.ini
MySQL binary:   /usr/bin/mysql
MySQL version:  mysql  Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
SQL modes:
WP-CLI root dir:        /home/wp-cli/
WP-CLI vendor dir:      /home/wp-cli/vendor
WP_CLI phar path:
WP-CLI packages dir:    /home/wp-cli/.wp-cli/packages/
WP-CLI global config:
WP-CLI project config:  /home/wp-cli/wp-cli.yml
WP-CLI version: 2.12.0

更新

你可以通过 wp cli update文档)更新 WP-CLI,或重复安装步骤进行更新。

如果 WP-CLI 由 root 或其他系统用户拥有,你需要运行 sudo wp cli update

想体验前沿版本?运行 wp cli update --nightly 以使用最新的每夜构建。每夜构建在开发环境中总体上足够稳定,并且始终包含最新与最棒的 WP-CLI 功能。

Tab 自动补全

WP-CLI 还提供适用于 Bash 与 ZSH 的 Tab 补全脚本。只需下载 wp-completion.bash 并在 ~/.bash_profile 中进行 source:

source /FULL/PATH/TO/wp-completion.bash

别忘了随后运行 source ~/.bash_profile

如果你的 shell 使用 zsh,在 source 之前可能需要加载并启动 bashcompinit。将以下内容放入你的 .zshrc

autoload bashcompinit
bashcompinit
source /FULL/PATH/TO/wp-completion.bash

支持

WP-CLI 的维护者与贡献者在处理一般支持问题上的时间有限。WP-CLI 的当前版本是唯一官方支持的版本。

在寻找支持时,请先在以下渠道搜索你的问题:

如果在上述渠道仍未找到答案,你可以:

GitHub issue 用于跟踪现有命令的增强与缺陷,而不是一般支持。提交缺陷报告之前,请先阅读我们的最佳实践,以帮助确保你的问题能得到及时处理。

请不要在 Twitter 上提出支持问题。Twitter 并非合适的支持渠道,因为:1)在 280 个字符内难以进行对话;2)Twitter 不是一个可以让有相同问题的人检索以往对话的地方。

请记住,libre != gratis;开源许可赋予你使用与修改的自由,但并不意味着他人的时间承诺。请保持尊重,并合理设置你的期望。

扩展

命令 是 WP-CLI 功能的原子单位。wp plugin install文档)是一个命令,wp plugin activate文档)是另一个命令。

WP-CLI 支持将任意可调用的类、函数或闭包注册为命令。它会从回调的 PHPDoc 中读取用法细节。WP_CLI::add_command()文档)既用于内部命令也用于第三方命令的注册。

/**
 * Delete an option from the database.
 *
 * Returns an error if the option didn't exist.
 *
 * ## OPTIONS
 *
 * <key>
 * : Key for the option.
 *
 * ## EXAMPLES
 *
 *     $ wp option delete my_option
 *     Success: Deleted 'my_option' option.
 */
$delete_option_cmd = function( $args ) {
	list( $key ) = $args;

	if ( ! delete_option( $key ) ) {
		WP_CLI::error( "Could not delete '$key' option. Does it exist?" );
	} else {
		WP_CLI::success( "Deleted '$key' option." );
	}
};
WP_CLI::add_command( 'option delete', $delete_option_cmd );

WP-CLI 自带数十个命令。创建自定义 WP-CLI 命令并没有看起来那么难。阅读命令手册了解更多。浏览内部 API 文档,发现可在自定义命令中使用的多种辅助函数。

贡献

感谢你主动为 WP-CLI 做出贡献。正因为有你以及你周围的社区,WP-CLI 才能成为如此优秀的项目。

贡献不局限于代码。 我们鼓励你以最适合自己能力的方式贡献,比如撰写教程、在本地聚会上进行演示、帮助其他用户解决支持问题,或完善我们的文档。

请阅读手册中的贡献指南,以全面了解你可以如何参与。遵循这些指南能传达你尊重项目其他贡献者时间的态度。相应地,他们也会尽力在与你合作时回馈这种尊重,不论时区与地域。

管理者

WP-CLI 项目维护者: schlessera

在特定情况下,我们会授予贡献者写入权限,前提是他们在一段时间内证明了自己有能力并致力于推动项目前进。

请阅读手册中的治理文档,了解项目的更多运作细节。

致谢

除了在 composer.json 中定义的库之外,我们还使用或借鉴了以下项目的代码或思想: