WP-CLI v0.24.0 发行说明

Wpcli logo

正如我在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.ymlconfig.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) listwp 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 listwp user list-capswp 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_invokeafter_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_commentswp export通知[#2620]。
  • 避免使用正则表达式修复参数参数的贪婪解析[#2587,#2717]。
  • 在提供为arg参数时考虑defaultoptions参数[#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 上浏览已解决问题的完整列表。

回到工作吧!

发表评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注