正如我在 WordCamp Europe 演讲中提到的:
就像 WordPress 有插件一样,WP-CLI 的未来是命令包。为了迎接这个未来,我正在积极解决 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 连接到机器,更改目录,一般需要花费一分钟来访问特定的 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 导出应用了扩展插入格式,以提供显著的性能提升 [#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.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 与包索引交互 [#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 对象时减轻了 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 格式化程序处理对象和
--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 上浏览已解决问题的完整列表。
回到工作吧!
发表回复