# WP-CLI  v1.5.0  发行说明

*Published:* 2018-01-31
*Author:* 壳壳虫

今天又是发布日！

我们很高兴地为您带来 WP-CLI[4](#541f1836) v1.5.0，自2017年11月v1.4.1以来合并了总共279个拉取请求。

这次发布由不知疲倦的 Martin Burke（@gitlost）领导，他确保了没有一个 bug 被忽视，没有一个边界情况未经测试。

新的提交者
-----

- Pascal（@swissspidy）住在瑞士苏黎世。除其他贡献外，他一直在处理 `embed` 命令族的艰苦工作。

插件 校验验证
-------

WP-CLI 现在可以通过新的 `plugin verify-checksums` 命令来验证已安装插件的完整性（除了已有的 `core verify-checksums` 命令）。\[#15\], \[#26\]

```
# 验证所有已安装插件的文件与官方校验和是否匹配。
$ wp plugin verify-checksums --all
+-------------+---------------+-------------------------+
| plugin_name | file          | message                 |
+-------------+---------------+-------------------------+
| gutenberg   | backdoor.php  | 文件已添加          |
| gutenberg   | gutenberg.php | 校验和不匹配 |
+-------------+---------------+-------------------------+
错误：只验证了 1 个插件中的 2 个（1 个失败）。

```

注意：这是该功能的第一个迭代版本，仍然存在一些限制：

- 它仅适用于托管在官方插件仓库中的插件。
- 它仅适用于这些插件的最新版本，因为我们尚未在 wordpress.org 后端部署代码来为旧版本生成校验和。

在您计划使用这个新命令时，请牢记这些限制。

随着我们进一步迭代此项目，允许验证来自主题仓库的所有免费主题，以及希望以后也包括第三方插件/主题，我们欢迎任何反馈意见以改进当前的实施。

WordPress 配置文件操作
----------------

现在，管理您的 `wp-config.php` 文件变得更加容易！我们不仅改进了 `config get`，还包括了 `config has` 和可过滤的 `config list` 命令… 不仅如此，我们最终为您带来了全新的 `config set` 和 `config delete` 命令，用于 WordPress 配置文件操作。\[#42\], \[#44\]

```
# 获取在 wp-config.php 文件中定义的 table_prefix。
$ wp config get table_prefix
wp_

# 检查 wp-config.php 文件中是否存在 DB_PASSWORD 常量。
$ wp config has DB_PASSWORD
(返回退出代码)

# 仅从 wp-config.php 文件中列出数据库用户和密码。
$ wp config list DB_USER DB_PASSWORD --strict
+-------------+-------+----------+
| key         | value | type     |
+-------------+-------+----------+
| DB_USER     | root  | constant |
| DB_PASSWORD | root  | constant |
+-------------+-------+----------+

```

特别感谢 @fjarrett 对 `wp-cli/wp-config-transformer` 软件包的出色工作，它支持了对 `wp-config.php` 的更改。

oEmbed 管理
---------

新的 `embed` 命令允许您检查和操作 oEmbed 对象，例如，您可以清除特定帖子的缓存值：

```
$ wp embed cache clear 123
成功：已清除 oEmbed 缓存。

```

或者重置缓存值：

```
$ wp embed cache trigger 123
成功：已触发缓存！

```

您可以使用 `fetch` 查看 URL[9](#7218f948) 的嵌入 HTML[5](#a17f90fb)：

```
$ wp embed fetch https://www.youtube.com/watch?v=dQw4w9WgXcQ

```

\[youtube https://www.youtube.com/watch?v=dQw4w9WgXcQ?feature=oembed&amp;w=525&amp;h=295\]

或者使用 `--raw` 选项查看提供程序返回的内容：

还有很多功能！

数组参数支持（目前仅限 meta）
-----------------

`post create` 和 `post update` 命令的 `--meta_input` 选项现在接受 JSON[6](#8c59903c) 格式的数组，因此您可以一次性添加或更新帖子及其元数据：

```
$ wp post create --post_title='Title' --post_content='Content.' --meta_input='{""key1"":""value1"",""key2"":""value2""}
成功：已创建帖子 123。

```

这是一个很好的时间节省方式，因为以前您需要运行三个单独的命令才能获得相同的结果。

这个看似无害的变更意味着我们终于可以通过这个 JSON 语法接受关联数组作为参数。 `--meta_input` 参数可能只是更多功能的第一个。

v1.5.0 中的其他内容
-------------

**向后兼容性破坏**

请注意，一个框架变更 \[#4624\] 改变了对 `db search`、`db tables` 和 `search-replace` 命令的表 filter 参数的行为。

现在，表筛选参数：

- 在给定表筛选而不给定 `--all-tables-with-prefix` 或 `--all-tables` 选项时，将尊重注册的 `wpdb` 表。
- 在给定 `--network` 选项时，不会忽略 `--scope` 选项。
- 表总是以排序顺序返回。

还请注意，`option list` 现在不再默认显示瞬时值（transients）\[#127\]。

**新的和值得关注的**

- `user reset-password`: 重置用户的密码 \[#119\]。
- 命令描述现在遵循 WordPress 的规范，使用第三人称单数，感谢 DrewAPicture！

**命令改进**

- `cli info`: 
    - 显示操作系统和 shell 信息 \[#4604\], \[#4610\]。
- `core download`: 
    - 当 ZIP URL 为 `'http://'` 时，跳过缓存以获取夜间版本 \[#44\]。
- `core update`: 
    - 在 WP `get_core_checksums()` 中忽略 SSL[8](#4814bf9d) trigger\_error \[#48\]。
    - 使用 `ZipArchive` 删除 `wp-content/` 以始终允许 `--skip-content` \[#59\]。
- `core verify-checksums`
    - 在 WordPress 根目录中包含以 `wp-` 为前缀的文件时，警告\[#28\]。
- `db *`: 
    - 使用新的 `after_wp_config_load` 钩子来提前调用 `db` 命令\[#57\]。
- `db check/cli/create/drop/export/import/optimize/query/repair/reset`: 
    - 为所有提升权限命令添加 `--dbuser` 和 `--dbpass` 选项，以及 `check`、`optimize` 和 `repair` 命令的额外参数选项\[#75\]。
- `db search`: 
    - 注意：有关表筛选参数的处理，请参见上面的向后兼容性破坏\[#4624\]。
- `db size`: 
    - 确保 `--size_format=<format>` 参数的默认值始终为字节\[#69\]。
    - 包括 TB 和 GB 数据库大小格式的支持\[#81\]。
- `db tables`: 
    - 注意：有关表筛选参数的处理，请参见上面的向后兼容性破坏\[#4624\]。
- `export`: 
    - 当已指定 `--post__in` 时，添加 `--with_attachments` 选项以强制包括附件\[#16\]。
- `media image-size`: 
    - 在输出中添加尺寸比率\[#58\], \[#59\]。
- `media regenerate`: 
    - 如果没有尺寸元数据，不会抛出 PHP 警告\[#61\]。
- `option get`: 
    - 如果选项不存在，显示错误消息\[#126\]。
- `option list`: 
    - 默认情况下不显示瞬时值\[#127\]。
- `package *`: 
    - 支持混合大小写的包名称\[#49\], \[#50\]。
    - 添加 `GITHUB_TOKEN` 和 `COMPOSER_AUTH` 处理\[#47\]。
- `package browse/list`： 
    - 如果浏览/列出软件包时，Composer[2](#2ec55bd2) 无法访问存储库\[#60\]，则捕获异常。
- `package install/uninstall`： 
    - 在内存限制错误时还原`composer.json` \[#64\]。
- `package install`： 
    - 从正确的分支检索软件包名称\[#65\]。
- `plugin install`： 
    - 将Github项目名称用作Github存档URL的插件目录\[#81\]
- `post create/update`： 
    - 通过将JSON格式的数组传递给`--meta_input`\[#133\]，\[#138\]来添加添加多个元数据的功能。
- `post create`： 
    - 在`--post_category`中接受`category`标签，检查是否提供了不正确的ID或标签\[#129\]。
- `post delete`： 
    - 纠正删除消息\[#124\]。
- `post generate`： 
    - 添加对生成特定`post_title`的支持\[#94\]。
- `scaffold block`： 
    - 为插件或主题构建基本的Gutenberg[1](#6729b68f)块\[#96\]。
    - 基于Gutenberg手册添加内联文档，生成`style.css`，支持最新的`supportsHtml`API[7](#8e97c2a8)，WordPress编码标准修复\[#107\]。
    - 将PHP模板更新为最新的推荐方法\[#111\]。
- `scaffold child-theme`： 
    - 生成符合WordPress编码标准的代码\[#117\]。
- `scaffold plugin`： 
    - 为构建的`Gruntfile.js`添加默认任务\[#87\]。
    - 生成符合WordPress编码标准的代码\[#120\]。
- `scaffold plugin-tests`： 
    - 使用Composer确定要安装的PHPUnit[3](#bca31561)版本，而不是根据Travis环境变量\[#75\]。
    - 将`phpunit.xml.dist`添加到XML[10](#8420d261)声明\[#78\]。
    - 在`bootstrap.php`中使用更新的错误消息\[#90\]。
    - 从Travis CI缓存中删除Composer供应商目录\[#99\]。
- `scaffold post-type`： 
    - 从dashicon参数中修剪`dashicon-`以防止重复字符串\[#70\]。
    - 刷新构建的文章类型标签\[#84\]。
    - 生成符合WordPress编码标准的代码\[#110\]。
- `scaffold taxonomy`： 
    - 将`term_updated_messages`添加到构建的分类法\[#82\]。
    - 生成符合WordPress编码标准的代码\[#112\]。
- `scaffold theme-tests`： 
    - 向`tests/bootstrap.php`添加`theme_root`过滤器，以确保主题的`functions.php`被加载\[#116\]。
- `search-replace`： 
    - 注意：请查看上面关于表过滤参数处理的向后兼容性破坏\[#4624\]。
    - 添加`--skip-tables=<tables>`参数以排除特定表格\[#48\]。
    - 在使用`--report-change-only`时禁用没有索引的报告表\[#54\]。
    - 对报告进行一般改进，包括在没有表格输出时禁用表格显示\[#57\]。
    - 修复未引用非整数主键\[#59\]，\[#63\]。
- `user remove-caps`： 
    - 如果权限不存在或从角色继承\[#125\]，则出错。

**框架增强**

- 在无法创建缓存目录时改进警告\[#4456\]。
- 允许`@when`方法覆盖类`@when`\[#4458\]。
- 从帮助文本中提取链接到脚注\[#4465\]。
- 实现命令命名空间\[#4470\]。
- 生成没有`set_url_scheme()`的`get_site_url()`\[#4473\]。
- 引入新的`after_wp_config_load`挂钩（用于早期调用`wp db *`）\[#4488\]。
- 使用`vagrant ssh-config`自动获取主机名\[#4495\]。
- 在找不到安装时指示数据库中的其他WP安装\[#4476\]。
- 允许在Debian构建中使用`php7.1-mysql`\[#4511\]。
- 在注册命令时支持`'longdesc'`作为命令参数\[#4513\]，\[#4636\]。
- 改进提取器错误消息\[#4510\]。
- 在multisite上运行`wp cache flush`和`wp search-replace`，即使找不到站点\[#4527\]。
- 修复在Windows git/cygwin bash上提示问题\[#4547\]。
- 除非启用全局术语，否则不显示`'sitecategories'`表\[#4552\]。
- 确保晚注册的命令出现在使用中\[#4564\]。
- 改进在调用进程和使用more.com时的Windows兼容性\[#4572\]，\[#4595\]。
- 在RPM构建中使用更柔和的PHP要求\[#4571\]。
- 仅当它们产生有效选项时才提供基于字典的建议\[#4590\]。
- 向`make_progress_bar()`添加间隔参数\[#4603\]。
- 添加`Utils\esc_like()`对`wpdb`版本的补充\[#4612\]。
- 正确处理`wp_get_table_names()`中的通配符（见上述向后兼容性破坏）\[#4624\]。
- 添加shell数组解析助手\[#4623\]，\[#4635\]。
- 检查WordPress core文件的可读性\[#4626\]。
- 为错误输入添加一些建议\[#4577\]。

**这次发布的贡献者总共有39位。**   
ahmadawais, BhargavBhandari90, danielbachhuber, davidbhayes, DrewAPicture, drzraf, ecotechie, emgk, eriktorsner, fjarrett, gitlost, grantpalin, gziolo, inetbiz, kirtangajjar, LC43, lukecav, marcochiesi, marksabbath, miya0001, mm-pagely, neonardo1, ntwb, ocean90, playmono, rkialashaki, runofthemill, ryotsun, sagarprajapati, schlessera, Shelob9, ssnepenthe, swissspidy, szepeviktor, terriann, thrijith, vbaranovskiy-plesk, vigilanteweb, websupporter

### 名词解释

1. Gutenberg：WordPress 的区块编辑器项目名称 [↩︎](#6729b68f-link)
2. Composer：PHP 的依赖管理工具 [↩︎](#2ec55bd2-link)
3. PHPUnit：PHP 语言的单元测试框架 [↩︎](#bca31561-link)
4. WP-CLI：WordPress 的命令行管理工具 [↩︎](#541f1836-link)
5. HTML：超文本标记语言，网页内容的基础格式 [↩︎](#a17f90fb-link)
6. JSON：一种轻量级的数据交换格式 [↩︎](#8c59903c-link)
7. API：应用程序编程接口，软件之间交互的标准方式 [↩︎](#8e97c2a8-link)
8. SSL：安全套接层协议，为网站提供加密通信 [↩︎](#4814bf9d-link)
9. URL：统一资源定位符，即网址 [↩︎](#7218f948-link)
10. XML：可扩展标记语言，用于结构化数据的通用格式 [↩︎](#8420d261-link)
<!-- WP Chinese Converter Full Page Converted. Target Lang: zh-sg -->