2016 年快乐!在我深入研究 RESTful CLI 项目之前,我想您可能会喜欢一个新的 WP-CLI 版本。
使用 wp cli update
来安装 v0.22.0,包括 137 个已解决的问题和拉取请求。以下是新的功能。
搜索替换,用于爱和利润
上个月,Pantheon 慷慨赞助了 15 小时的我的时间,以解决一些长期积压的错误,并进行一些重大增强。
让我们从好消息开始:
- 性能提升!现在,WP-CLI 只运行一次 MYSQL LIKE 语句,而不是每 1000 行运行一次 [#2304] 。在一个大约 350 万行的帖子 meta 表中,其中有 75,610 行受影响,这一更改将执行时间从 734.926 秒提高到 225.509 秒 (快了 3.3 倍) 。
- 使用
--export=<filename>
参数来创建转换后的数据的 SQL 文件,而不是对数据库进行更新 [#2254] 。当您希望为新环境准备数据库而无需导入然后运行搜索替换时,这是一个有用的功能。 - 可以在表名中使用通配符 [#2233] 。使用
wp search-replace <old-string> <new-string> '*meta*'
来搜索替换只是带有meta
的表。注意:模式需要用引号引起来,因为*
在 Bash 中是一个特殊字符。
我还解决了许多搜索替换错误和小的增强功能:
- 默认情况下,在替换序列化数据内部时递归对象 [#2222] 。除其他功能外,这可以确保主题修改按预期进行转换。您可以使用
--no-recurse-objects
来禁用此行为。但是,如果您禁用了此行为,我希望能听到您的意见。我认为这是一个可以在以后删除的不必要选项。 - 正确转义用于搜索或替换字符串的引号 [#2230] 。
- 告知用户在执行搜索替换过程后刷新持久对象缓存 [#2236] 。
- 当替换字符串与搜索字符串相同时,提前退出 [#2235] 。
- 在使用
--verbose
运行搜索/替换时指示执行时间 [#2242] 。 - 当没有需要替换时,防止不必要的调用
$wpdb->update()
[#2245] 。 - 在正则表达式模式下去除不必要的
REGEXP
查询 [#2305] 。
受支持版本的更改
WP-CLI 的最低受支持的 WordPress 版本现在是 3.7 [#2261] 。
我们还正式支持 PHP 7 [#2330] 。
v0.22.0 中的其他一切
wp scaffold (plugin|plugin-tests)
的改进:
- 通过仅在分支的初始构建失败时发送电子邮件通知来减少 Travis 的噪音 [#2194] 。
- Plugin 的 header 遵循 WordPress 的 PHPDoc 标准 [#2197] 。
- 向 PHPUnit 配置文件添加
.dist
扩展名,以允许使用本地配置文件进行覆盖 [#2247] 。 - 解析
readme.txt
以查找用作 Travis 测试版本的 WordPress 版本 [#2255] 。 - 包括默认的
.gitignore
[#2297] 。
现有命令的新标志:
wp core update --minor
仅执行小更新 [#2256] 。wp (post|comment|user) meta delete <id> --all
删除给定对象上的所有元数据值 [#2265] 。wp core update-db --dry-run
查看是否需要升级数据库 [#2293] 。wp media regenerate --only-missing
用于在包含大量图像的站点上提供更快的性能,其中仅有少量缺少大小的图像 [#2292] 。wp cron event run --all
执行所有已注册的 cron 事件 [#2323] 。wp site empty --uploads
清空站点并删除其上传目录 [#2339] 。wp core install --skip-email
在没有电子邮件通知的情况下安装 [#2345] 。wp transient (get|set|delete) --network
用于管理站点短时存储 [#2351] 。
框架增强:
- 在比较 WordPress 版本时引入
wp_version_compare()
[#2237] 。 SVN 和 Git 标签在$wp_version
中包括-src
,这是version_compare()
不喜欢的。 - 在设置时推迟使用
$PAGER
环境变量 [#2264] 。 - 向项目引入
composer.lock
文件,以修复对特定散列的依赖关系 [#2280] 。 - 通过全局化 wp-config.php 中定义的任何新变量,因为它们预计是全局的 [#2318] 。
- 如果缺少
--require=<file>
,则指定缺失文件引用位置的上下文,以便更容易进行调试 [#2336] 。 - 使用
mustangostang/spyc
而不是捆绑我们自己的副本 [#2350] 。Spyc
类仍然在全局命名空间中可用。 - 引入
WP_CLIUtilsget_temp_dir()
以获取更安全的临时目录 [#2353] 。
其他命令的改进:
- 在建立自定义 taxonomy 时包括
not_found
标签 [#2196] 。 - 允许在文件名中不包含
.zip
的情况下安装远程插件文件 [#2193] 。 - 在将用户添加为超级管理员时,警告如果用户已经是超级管理员 [#2202] 。
- 在
wp import
中使用WP_CLI::log()
而不是WP_CLI::line()
,因此尊重--quiet
标志 [#2234] 。 - 为通配符表 (
wp db tables
)(例如*meta*
),--all-tables-with-prefix
和--format=csv
增加支持 [#2250] 。 - 在安装插件或主题时,资源未找到时改进错误消息 [#2253,#2267] 。
- 使用
--filename_format=<format>
支持自定义wp export
文件名格式 [#2230] - 假设在
wp install
期间出现数据库错误,这是安装失败,并相应地报告 [#2337] 。 - 在
wp scaffold plugin
时在运行时公开插件标头详细信息 [#2338] 。 - 在
wp scaffold package-tests
中包括ci/behat-tags.php
文件 [#2342] 。
全面的错误修复:
- 在检测到 WP 但未安装时允许
help
提前运行 (例如,wp core config --help
) [#2190] 。该错误是在 v0.20.0 中引入的。 - 在创建 child theme 时,为子主题的 enqueue 函数创建父主题 slug 的安全版本 [#2203] 。以前,如果父 slug 包括破折号,将生成无效的 enqueue 函数。
- 在查找
wp-config.php
并启用 PHP 的open_basedir
时抑制错误通知 [#2211] 。 - 修复了
WP_CLILoggersQuiet
中的错误通知 [#2210] 。 - 在 custom post type scaffolding 中修复了
all_items
标签 [#2213] 。 - 确保在下载夜间 WP-CLI Phar 构建时,实际下载的是夜间版本,而不是重定向 [#2214] 。
- 在安装 multisite 时,将
upload_space_check_disabled
设置为1
。这与新安装上的 core 行为相符。 - 在图像重生失败时提供更有帮助的消息 [#2239] 。
- 在删除父项时正确更新菜单子项父项 [#2262] 。
- 在使用
wp rewrite structure
时停止在重写规则前缀中添加index.php
[#2279] 。 - 在
wp transient set
简介中修复拼写错误 [#2282] 。 - 为非美国英语区域恢复
wp core verify-checksums
支持 [#2287] 。该错误是在 v0.21.0 中引入的。 - 在可用时,切换到 readline 库,以更好地支持使用
--prompt
的箭头键 [#2325] 。 WP_CLIFormatter
在对象上适当检查 null 值 [#2322] 。- 在
wp media import
中,使用主机而不是方案来确定文件是远程还是本地,以支持 Windows[#2324] 。 - 确保在指定无效的
--version=<version>
的情况下更新插件时不会删除插件 [#2346] 。
该版本的贡献者包括:2ndkauboy, coreyworrell, danielbachhuber, davidleach, duncanjbrown, ernilambar, fjarrett, gilbitron, greg-1-anderson, iandunn, jjeaton, modelm, rodrigoprimo, ryanshoover, stevector, szepeviktor, tristanpenman, x1024 。
您可以在 Github 上查看所有已解决问题的完整列表。
发表回复