很难相信上次 WP-CLI 发布只有两个月,因为这是我写过的发布文章中最长的一篇。提前致以歉意。
如果你没能阅读全文,这是关于 WP-CLI v0.23.0 你绝对需要知道的:
- 此版本包括与 WordPress 4.5 兼容性。较旧的 WP-CLI 版本与 WordPress 4.5 不兼容。如果你计划在将来使用 WordPress 4.5,你需要在这之前升级。
- 现在你可以使用
wp package browse
浏览可用的软件包,并用wp package install
安装它们。尝试wp package install runcommand/db-ack
。 - 有许多新的工具来注册命令。不再需要扩展
WP_CLI_Command
。查看命令手册以了解更多信息。 - 所有维基页面已经迁移到网站上的文档门户,包括新页面,记录了你可以在自己的命令中使用的内部 API 。鼓励提交拉取请求。
现在我已经透露了所有的惊喜,让我们继续发布文章。
哦,天哪,我忘记了另外两件事:
- 对于那些使用 Phar 文件的人,这应该是你们大多数人,WP-CLI 现在会自动检查更新,并在适用时提示你进行更新。甚至对于使用夜间构建版本的人也有效。这个行为是可配置的,下文有详细信息。
- 我已经决定以 runcommand 为我的新 WP-CLI 企业命名。在网站上注册电子邮件以获得更新,或者在 Twitter 上关注 @runcommand 。
现在,让我们继续发布文章。
WordPress 4.5 兼容性
WordPress 4.5 在 wp-settings.php
中加载了另一个文件。由于 WP-CLI 有一个自定义的 wp-settings-cli.php,WP-CLI v0.23.0 是唯一与 WordPress 4.5 兼容的版本。
重要的是,由于这些变更的性质,WP-CLI 0.23.0 之前的版本将与 WordPress 4.5 不兼容。
查看这个拉取请求中的变更性质。
想要帮助修复这个问题吗?重新倒一杯咖啡,然后深入阅读 WordPress Trac 上的 #34936 讨论。
从软件包索引安装社区命令
考虑以下情况 (#2523):
使用
theme list
命令,没有--url
参数显示主题是否启用于网络并在默认站点中处于活动状态。如果你传递网络的站点的
--url
,该命令将显示该站点中的主题是否活动。但是我找不到一种列出网络中每个站点中不活动主题的方法,以便我可以安全地禁用并删除它们,我很愿意拥有这个功能
如果你必须使用 WordPress 网络管理员完成这项任务,那可能需要你数小时,甚至数天。而仅仅编写用于解决这个问题的 WP-CLI 命令仅花费了我 3 分钟 (runcommand/find-unused-themes) 。 WP-CLI 确实是管理 WordPress 最快捷的接口。
WP-CLI 通常在决定是否引入新功能时遵循 80/20 规则。如果该功能对大多数人可能有用,那可能会引入;否则,可能不会。那 20% 不应该被遗留下来,尤其是当涉及到真正有用的命令时。
今天,我很自豪地重新引入了软件包索引,这是由社区维护的 WP-CLI 软件包的目录。浏览可用的包以安装它们,使用 wp package browse
(文档) 。一旦找到你需要的解决方案,就可以使用 wp package install
(文档) 进行安装:
$ wp package install runcommand/find-unused-themes
正在安装 runcommand/find-unused-themes (dev-master)
更新 /home/vagrant/.wp-cli/packages/composer.json 以需要该软件包...
使用 Composer 安装该软件包...
---
从包信息中加载 composer 仓库
更新依赖关系
分析 2223 个软件包以解析依赖关系
分析 29243 条规则以解析依赖关系
- 正在安装软件包
正在写入锁文件
生成自动加载文件
---
成功:软件包安装成功。
$ wp find-unused-themes
正在检查 http://wordpress-develop.dev/ 中未使用的主题...
正在检查 http://wordpress-develop.dev/foo/ 中未使用的主题...
+----------------+---------+
| 名称 | 版本 |
+----------------+---------+
| 默认 | 1.7.2 |
| mystore | 1.0.6 |
| p2 | 1.5.5 |
| twentyeleven | 2.3 |
| twentyfourteen | 1.6 |
| twentyten | 2.1 |
| twentythirteen | 1.8 |
| twentytwelve | 1.9 |
+----------------+---------+
相当酷,对吧?请注意,WP-CLI 的软件包管理在这个时候被视为测试版功能。你可能会遇到一些尚未报告的问题,或者发现一个尚未报告的错误。如果你有兴趣深入研究 Composer 的内部工作,帮助改进 wp package
将是一个很好的开始。
与 wp package
相关的拉取请求包括 #2442 、 #2460 、 #2491 、 #2512 、 #2514 、 #2533 、 #2534 、 #2537 、 #2540 、 #2543 、 #2546 、 #2547 、 #2555 、 #2561 。
注册更多命令
有没有想过为什么在编写自己的命令时需要扩展 WP_CLI_Command
?实际上,你不需要这样做。
实际上,WP_CLI::add_command()
(文档) 现在支持将任意可调用对象注册为 WP-CLI 命令。例如,这里有一个用于重置一个或多个用户密码的闭包命令 (runcommand/reset-passwords):
/**
* 为一个或多个 WordPress 用户重置密码。
*
* <user>...
* : 指定一个或多个用户登录名或 ID 。
*/
$reset_password_command = function( $args ) {
$fetcher = new WP_CLIFetchersUser;
$users = $fetcher->get_many( $args );
foreach( $users as $user ) {
wp_update_user( array( 'ID' => $user->ID, 'user_pass' => wp_generate_password() ) );
WP_CLI::log( ""为 {$user->user_login} 重置密码。"" );
}
WP_CLI::success( '密码已重置。' );
};
WP_CLI::add_command( 'user reset-passwords', $reset_password_command );
想要在命令之间重用参数定义吗?现在,你可以将命令概要作为 WP_CLI::add_command()
的第三个参数进行注册 (runcommand/hook):
WP_CLI::add_command( 'hook', $hook_command, array(
'shortdesc' => '列出已注册给定操作或筛选器的回调。',
'synopsis' => array(
array(
'name' => 'hook',
'type' => 'positional',
'description' => '操作或筛选器的键。',
),
array(
'name' => 'format',
'type' => 'assoc',
'description' => '将回调列为表、 JSON 或 CSV 。',
'optional' => true,
'options' => array( 'table', 'json', 'csv' ),
'default' => 'table',
),
),
) );
请注意 format
的默认参数属性。 WP-CLI 接受参数注册的一部分,以使处理用户输入更容易。这些属性还可以在可调用的 PHPDoc 中定义:
/**
* 列出已注册给定操作或筛选器的回调。
*
* <hook>
* : 操作或筛选器的键。
*
* [--format=<format>]
* : 将回调列为表格、 JSON 或 CSV 。
* ---
* options:
* - table
* - json
* - csv
* default: table
* ---
*/
$hook_command = function( $args, $assoc_args ) {
查看命令手册,深入了解命令注册。与 WP_CLI::add_command()
的这些改进相关的拉取请求包括 #2373 、 #2389 、 #2398 、 #2409 、 #2556 、 #2559 。
更多、更好、更易找到的文档
实际上很难想象以前人们是如何操作的。以下是文档领域的变化:
- 维基已经以网站上的文档门户的形式重生。当我将它们搬到新位置时,我花了时间整理页面,希望你会发现新的命令手册非常有帮助。
- 现在公开记录了你可以在自己的命令中使用的内部 API 。内部 API 页面是从代码库生成的,这应该极大地帮助维护工作。
- 在每个命令页面上,都有一个 「Github 问题」 链接,以便更容易找到给定命令的所有未解决和已解决问题。例如,这是所有关于
wp package
及其子命令的未解决问题。请注意,这不一定是精确的,因为我没有回顾所有时间的所有问题。随着时间的推移,这个功能将变得更加有用。
与文档改进相关的拉取请求包括 #2454 、 #2487 、 #2494 、 #2499 、 #2507 、 #2513 、 #2515 。
自动更新检查
对于那些使用 WP-CLI 作为 Phar 文件的人,这应该是大多数人,版本 0.23.0 及更高版本将自动检查更新。如果发现更新,您将被提示安装。
即使对于那些使用夜间构建的人,自动更新检查也能正常工作!使用 wp cli update --nightly
在每个 主要发布版本 后返回到夜间版本。
默认情况下,自动更新检查将每天运行一次,适用于具有可写权限的 WP-CLI Phar 文件的用户。分发文件或目录不可写?那么检查将不会运行。自动更新检查在用户运行 wp help <some-command>
时览发,而不是在脚本运行时触发。此频率可以使用 WP_CLI_AUTO_CHECK_UPDATE_DAYS
环境变量进行配置,也可以使用 WP_CLI_DISABLE_AUTO_CHECK_UPDATE
环境变量来完全禁用。
此功能的相关拉取请求包括 #2536 和 #2538 。
0.23.0 中的其他内容
命令改进:
- 通过仅获取所需的数据,提高了
wp (user|post) list --format=count
的性能 [#2370, #2387] 。 - 在
wp scaffold plugin-tests
中使用 Travis 默认设置时,防止重复构建 [#2377] 。 - 使用
wp comment generate --post_id=<post-id>
为特定帖子生成评论 [#2388] 。 - 在使用
wp core (update|download) --force
时,清理了上个版本的文件 [#2382, #2406, #2413, #2432] 。 - 在
wp cron event run
中为个别事件添加了计时器 [#2437] 。 - 引入了
wp term meta
以管理术语 元数据 [#2444] 。 - 为
wp (theme|plugin) update
添加了 CSV 和 JSON 输出格式 [#2452] 。 - 使用
wp core download
验证下载的存档文件的 MD5 哈希值 [#2461] - 在
wp core verify-checksums
中完全避免加载 WordPress [#2459] 。 - 支持使用
wp site empty
清空术语元数据 [#2506] 。 - 向
scaffold (post-type|taxonomy)
添加 WP REST API 注册参数 [#2551] 。 - 在运行
wp scaffold plugin-tests
时,为test-sample.php
和bootstrap.php
添加了文档 [#2577, #2578] 。
框架增强:
- 将
WP_CLI::confirm()
切换为自动将响应转换为小写,允许使用Y
或y
[#2366] 。 - 在 WP 加载过程中,添加了
(before|after)_wp(_config)_load
钩子,允许通过--require
注入的代码在引导过程中进行修改 [#2375] 。 - 根据 WordPress 编码标准,在项目根目录中添加了
.editorconfig
[#2395] 。 - 在
WP_CLI::error_to_string()
中将WP_Error
数据编码为 JSON,以便数据实际上是可读的 [#2397] 。 - 在
WP_CLI::error()
中支持自定义退出代码 [#2440] 。 - 引入了
--format=yaml
以轻松显示数据为 YAML [#2453] 。 - 支持配置深度合并和继承 [#2496] 。
- 更新 Composer 依赖项 [#2554]
各方面的错误修复:
- 在
bin/install-wp-tests.sh
中,在下载并设置wp-tests-config.php
之前不要进入WP_TESTS_DIR
目录 [#2371] 。 - 使用
--prompt
时,现在只会提示执行线程中的第一个命令。以前,在命令中使用WP_CLI::run_command()
会导致提示 UX 再次出现 [#2400] 。 - 在成功之前不要在
wp theme activate
上离开 [#2412] 。 - 在列出术语之前检查是否存在 分类 [#2414] 。
- 在尝试更新不存在的 核心 版本时,在尝试解压无效存档之前检查 HTTP 响应代码 [#2368] 。
- 修复了
wp server
在 PHP 二进制文件包含空格时的问题 [#2422] 。 - 对
wp export
的--skip_comments
标志进行了修复,这个问题已经存在了很长时间 [#2427] - 在缺少标题或说明时在
wp media import
中保留 IPTC 数据;从默认标题中移除扩展名 [#2438, #2466] 。 - 在更新主题或插件时禁用检查翻译更新 [#2439] 。
- 在 multisite 上创建新用户时修正了参数序列顺序 [#2443] 。
- 在
--format=table
时正确处理自动着色 [#2458] 。 - 使用核心的版本检查 API 查找更新,这为我们提供了确切的下载链接 [#2469] 。
- 在
wp cli update
中使用更稳健的下载失败检查 [#2488] 。 - 在核心尚未安装时,提前运行
wp core
命令的帮助 [#2497] 。 - 修复了当命令具有子命令时全局参数的格式 [#2516] 。
- 在
wp search-replace
中正确处理多列键 [#2531] 。 - 当将 WP-CLI 安装到父 Composer 项目时,使用正确的自动加载程序路径 [#2550] 。
- 将字段正确传递给
plugins_api()
请求的wp plugin search
;添加page
参数 [#2570, #2571] 。 - 在
wp theme status
中添加了parent
作为潜在状态 [#2573]
贡献者:anantshri, danielbachhuber, edueo, GaryJones, gilbitron, hina, hinoue-work, jacobischwartz, marco-c, markjaquith, markkimsal, mbovel, ottok, rodrigoprimo, sourcerer-mike, staude, szepeviktor, za-creature
您可以在 Github 上浏览已解决问题的完整列表。
发表回复