# WP-CLI v0.24.0  发行说明

*Published:* 2016-07-27
*Author:* 壳壳虫

正如我在WordCamp[2](#2bf64dd9) Europe演讲中提到的：

> 就像WordPress有插件一样，WP-CLI[3](#9a11403f)的未来是命令包。为了迎接这个未来，我正在积极解决WordPress插件存在的问题：
> 
> - 在WordPress插件被视为core中包含的次要功能时，我希望WP-CLI包被视为WP-CLI中命令的一流公民。
> - 很多时候，WordPress插件只有一个作者。我希望每个WP-CLI包都有两到三名活跃的维护者。

在这个模型中，WP-CLI成为了共同的接口和支持应用程序层，用于丰富的功能生态系统。这样做会为创新开辟更多领域，从而提供更多的想法选择。而且因为有更多人参与包的作者，WP-CLI也会从更多的贡献者池中受益。

在这个模型下，我的重点转向了为WP-CLI包的作者提供世界一流的体验。阅读命令手册以全面介绍如何创建WP-CLI命令。查看`wp scaffold package` \[repo\]，这是生成新WP-CLI包的最简单方法。请提出您对WP-CLI包索引的发展意见。并关注@runcommand，因为我将探索商业化WP-CLI产品和服务 – 希望runcommand只是几个基于WP-CLI的企业中的第一个。

最后一个请求：如果您关心WP-CLI的发布周期、依赖关系和向后兼容性，请告诉我您认为WP-CLI应该以多频率发布。

让我们继续。使用`wp cli update`来安装v0.24.0，代表着解决了449个问题和拉取请求。以下是新功能：

### 不再使用分叉的`wp-settings.php`

每个应用程序都有一个引导文件，用于加载提供请求所需的所有必要工具。在WordPress中，这被称为`wp-settings.php`。

从v0.8.0 \[#261\] 开始，WP-CLI使用了这个引导文件的分叉版本，称为`wp-settings-cli.php`，以提供更多对加载过程的控制，提供像`--skip-plugins`这样的功能。但是，由于WordPress可以从`wp-settings.php`引入新文件，因此维护一个分叉的版本会导致WP-CLI在WordPress的新版本发布时经常出现问题。

幸亏在WordPress项目中进行了协调的变更，WP-CLI v0.24.0 回到了加载WordPress 4.6及更高版本的`wp-settings.php` \[#2278\]。这样做应该使WP-CLI更具未来性，能够适应WordPress的新版本。

### 更多语言的文档

多亏了一群坚实的贡献者的不懈努力，WP-CLI现在拥有更多语言的文档。

- 数十个命令的示例已经改进，可供参考。
- 我们有一个新的CONTRIBUTING.md，同时也在网站上有一个页面。
- 我们的新README.md用于WP-CLI首页，并提供了日本语、法语、葡萄牙语（巴西）、土耳其语、德语、尼泊尔语和希腊语版本。

想要参与WP-CLI的文档编写吗？查看Github上标记为“scope:documentation”的问题。

### 轻松使用WP-CLI对任何WordPress安装执行命令

WP-CLI别名是您在`wp-cli.yml`或`config.yml`中注册的快捷方式，用于轻松运行命令以执行任何WordPress安装。

例如，如果我在本地工作，使用runcommand主题，已经注册了新的重写规则，并需要在基于Vagrant的虚拟机中刷新重写规则，我可以运行：

```
$ wp @dev rewrite flush
成功：重写规则已刷新。

```

然后，一旦代码进入生产环境，我可以运行：

```
$ wp @prod rewrite flush
成功：重写规则已刷新。

```

看，不再需要SSH[7](#287d4abd)连接到机器，更改目录，一般需要花费一分钟来访问特定的WordPress安装。

此外，别名组允许您注册别名组。如果我想对两个runcommand WordPress实例运行命令，我可以使用`@both`：

```
$ wp @both core check-update
成功：WordPress已是最新版本。
成功：WordPress已是最新版本。

```

别名可以在您的项目的`wp-cli.yml`文件中注册，或者在您的用户全局`~/.wp-cli/config.yml`文件中注册：

```
@prod:
  ssh: runcommand@runcommand.io~/webapps/production
@dev:
  ssh: vagrant@192.168.50.10/srv/www/runcommand.dev
@both:
  - @prod
  - @dev

```

### 等等，那个‘ssh’是什么意思？

WP-CLI现在原生支持一个`--ssh=<host>`全局参数，用于在远程WordPress安装上运行命令。非常感谢XWP和他们的社区为WP-CLI SSH铺平道路。

在底层，WP-CLI将命令代理给`ssh`可执行文件，然后将它们传递到远程机器上安装的WP-CLI。您的`-ssh=<host>`的语法可以是以下之一：

- 只有主机（例如`wp --ssh=runcommand.io`），这意味着用户将从您当前的系统用户推断出，路径将是SSH用户的主目录。
- 用户和主机（例如`wp --ssh=runcommand@runcommand.io`）。
- 用户、主机和WordPress安装路径（例如`wp --ssh=runcommand@runcommand.io~/webapps/production`）。路径紧跟在主机的TLD之后。

或者，如果您使用`~/.ssh/config`，`<host>`可以是SSH配置中存储的任何主机别名（例如，对我来说`wp --ssh=rc`）。

请注意，您需要在远程服务器上拥有一个可访问的名为`wp`的WP-CLI的副本。此外，如果您已经定义了一个shell别名，或者正在扩展`$PATH`环境变量，`--ssh=<host>`将不会加载您的`.bash_profile`。如果这对您产生影响，下面是如何让`wp`可访问的更详细的解释。

有关别名和SSH支持的相关拉取请求包括：＃2755、＃2974、＃3012、＃3013、＃3014、＃3016、＃3026、＃3040、＃3070、＃3093、＃3100、＃3117、＃3134、＃3135、＃3145、＃3161、＃3180。

### 0.24.0中的其他一切

命令改进：

- 使用`wp shell`交互提示时添加了一个新行\[#2601，#2659\]。
- 改进了脚手架插件的格式\[#2588，#2598\]。
- 为`wp (*) generate`命令引入了`--format=ids`，以便更轻松地链接\[2622\]。
- 添加了`term recount`命令，用于触发重新计算分配给帖子的taxonomy术语\[#2625，#2628\]。
- 在脚手架时规范化了plugin/主题版本号和header格式\[#2644\]。
- 引入了`--due-now`来运行所有到期或过期的cron事件\[#2658\]。
- 允许`wp cron (event|schedule) list`和`wp option list`输出单个字段\[#2657，#3033\]。
- 在cron事件列表命令中添加了字段过滤\[#2674\]。
- 在脚手架新插件时包含了一个`.distignore`文件，用于定义从分发中排除的文件和文件夹\[#2697，#2756，#3042，#3088\]。
- 在`wp search-replace`中使用`--dry-run`时显示摘要成功消息\[#2740\]。
- 根据支持的WordPress版本脚手架插件\[#2751\]。
- 对search-replace SQL[6](#f2d95682)导出应用了扩展插入格式，以提供显著的性能提升\[#2745\]。
- 在wp-admin或wp-includes中存在额外文件时，使用`wp core verify-checksums`发出警告\[#2638\]。
- 为`wp cap list`，`wp user list-caps`和`wp super-admin list`支持`--format=<format>`参数\[#2851，#2961和#2949\]。
- 允许使用`wp term url`选择多个术语ID\[#2865\]。
- 在检查缓存类型时支持PHP[5](#26303f64) 5.5 Memcache扩展\[#2945\]。
- 在主题已经激活时使用`WP_CLI::warning()`，以使行为更一致的插件激活\[#3015\]。
- 为`wp db export`添加了`--porcelain`标志\[#3032\]。
- 在`wp theme list --fields=<field>`中允许选择作者字段\[#3043\]。
- 引入`wp widget reset <sidebar>`，用于从sidebar中删除所有小部件并将它们放在不活动的sidebar中\[#3077\]。
- 支持`wp core download`的“trunk”和“nightly”版本参数\[#3127\]。
- 为`wp role reset`添加了详细信息\[#3132，#3141\]。
- 为`wp search-replace`添加了`--include-columns=<columns>`参数\[#3142\]。
- 为`wp plugin test scaffold`添加了`--ci=<provider>`参数，支持‘travis’，‘circle’或‘gitlab’\[#3144，#3163\]。

框架增强：

- 在`WP_CLI::add_command()`中使用`is_callable()`，而不是自定义逻辑\[#2595\]。
- 引入`CompositeCommand->remove_subcommand()`，并修改引导过程以始终注册核心命令\[#2629\]。
- 在子命令上运行`before_invoke`和`after_invoke`回调，以便可以在子命令执行之前和之后立即挂钩\[#2647，#2686\]。
- 引入`--debug=<group>`以限制调试输出到特定组的调试调用\[#2648\]。
- 通过SSL[8](#56500f15)与包索引交互\[#2720\]。
- 在使用`--fields=<fields>`时支持带有空格的CSV\[#2750\]。
- 在定义`ALTERNATE_WP_CRON`时禁用WP cron\[#3118\]。
- 支持在`wp-cli.yml`中定义的位置参数\[#3120\]。
- 引入`WP_CLI_STRICT_ARGS_MODE`以处理参数歧义\[#3128\]。
- 注册用于RESTful WP-CLI的`--http=<url>`全局参数\[#3130\]。
- 引入`WP_CLI::add_wp_hook()`，用于在没有访问操作和过滤器时添加操作和过滤器\[#3195\]。
- 增加了最低支持的PHP版本到5.3.29\[#2672\]。

全面修复各种错误：

- 在实例化Composer[1](#887ef27b)对象时减轻了DateTime致命错误\[#2607\]。
- 消除了关于`skip_comments`的`wp export`通知\[#2620\]。
- 避免使用正则表达式修复参数参数的贪婪解析\[#2587，#2717\]。
- 在提供为arg参数时考虑`default`和`options`参数\[#2741\]。
- 在使用`wp media regenerate`时考虑大小不存在的情况，而且没有注册大小\[#2645\]。
- 从`translations_api()`捕获`WP_Error`\[#2671，#3179\]。
- 不会错误地尝试使用`--all`标志激活或停用插件\[#2692\]。
- 在运行`wp cron event run`时在加载WordPress之前定义`DOING_CRON` \[#2691\]。
- 只有在从CSV导入用户时才尝试在multisite上使用`add_user_to_blog()`\[#2690\]。
- 修复了列出与给定用户名关联的用户meta的问题\[#2700\]。
- 在将评论移动到trash时区分了输出，而不是在删除评论时输出\[#2701\]。
- 通过在每个文件之后清除对象缓存来防止`wp export`导致内存使用过高\[#2716\]。
- 在安装时忽略模糊的空插件和主题slug\[#2715\]。
- 在运行使用评论ID的命令时采用所有数字\[#2714，#2901\]。
- 只在存在时显示软件包目录路径\[#2773\]。
- 在主题命令中早日退出，如果主题损坏或出现错误\[#2798\]。
- 在主题目录存在但错误时显示错误，允许强制安装\[#2821\]。
- 在安装child theme时修复了一个PHP通知，并运行`wp theme status`\[#2976，#3047\]。
- 确保YAML[4](#b6cc787e)格式化程序处理对象和`--fields=<fields>`参数\[#3060\]。
- 修复了`wp menu list`如果`--format=ids`\[#3075\]的异常。
- 在停用插件时填充最近活动的插件列表\[#3068\]。
- 在应用参数默认值时，尊重`wp-cli.yml`的默认值\[#3111\]。
- 在传递给帖子、评论、术语和用户命令的数据上调用`wp_slash()`\[#3156，#3157，#3158，#3159，#3167，#3173\]。
- 适当列出了重复的cron事件\[#3175\]。

此版本的贡献者：andyexeter, bordoni, danielbachhuber, diggy, enrico-sorcinelli, ernilambar, geo4orce, gedex, gilbitron, hideokamoto, apertureless, JRGould, johnbillion, kkoppenhaver, kouratoras, markjaquith, miya0001, mustafauysal, NateWr, Nikschavan, ocean90, petenelson, phh, rachelbaker, PatelUtkarsh, PeterDaveHello, robhenley rodrigoprimo, roelveldhuizen, ShinichiNishikawa, shulard, stephenharris, stevenkword, swissspidy, taianunes, villevuor, voldemortensen, wesm87, 8bitodyssey

您可以在 Github 上浏览已解决问题的完整列表。

回到工作吧！

### 名词解释

1. Composer：PHP 的依赖管理工具 [↩︎](#887ef27b-link)
2. WordCamp：WordPress 社区全球官方交流活动 [↩︎](#2bf64dd9-link)
3. WP-CLI：WordPress 的命令行管理工具 [↩︎](#9a11403f-link)
4. YAML：一种易读的数据序列化格式，常用于配置文件 [↩︎](#b6cc787e-link)
5. PHP：WordPress 核心使用的服务端编程语言 [↩︎](#26303f64-link)
6. SQL：结构化查询语言，用于操作关系型数据库 [↩︎](#f2d95682-link)
7. SSH：安全外壳协议，用于远程登录和管理服务器 [↩︎](#287d4abd-link)
8. SSL：安全套接层协议，为网站提供加密通信 [↩︎](#56500f15-link)
<!-- WP Chinese Converter Full Page Converted. Target Lang: zh-sg -->