开发者新动态(2024年2月)
WordPress 6.5 预计将于2024年3月26日发布,首个 Beta 版本计划于2月13日发布。这意味着过去几周对核心代码库的提交速度已经加快。
好消息是? 有很多好东西即将到来,你现在就可以开始尝试。
有点坏的消息是? 过去一个月的变化如此之多,以至于在本月的汇总中几乎不可能详细涵盖所有内容。我将尽力涵盖对扩展开发者来说最重要的功能,但不得不做了一些取舍。
同时,请务必查看 Gutenberg 17.7 RC。它已于2月9日星期五发布,并将包含最终进入 WordPress 6.5 的功能。
和往常一样,请确保你在开发环境中运行 WordPress trunk 和最新版本的 Gutenberg 插件,以测试以下更新。
重点内容
区块绑定 API、自定义字段和模式覆盖
url 和 alt 属性绑定到自定义字段。随着 WordPress 社区的人们开始学习如何以全新的方式扩展区块,区块绑定 API 即将成为热门话题。
简而言之,区块绑定 API 允许你将来自各种来源的数据绑定到现有的区块属性。例如,你可以将 Image 区块的 url 属性绑定到一个自定义字段,从而在前端自动注入来自该自定义字段的 URL。在许多情况下,这个新的 API 甚至允许你无需构建自定义区块,而是扩展核心区块。
WordPress 6.5 将附带两个绑定源,用于处理文章元数据(自定义字段)和模式覆盖。但你也可以注册自己的绑定源以进行更深度的自定义。
要随时了解这些功能的最新动态,你可以关注 区块绑定 API 跟踪问题以及 GitHub 上的相关工单。
定义和过滤允许的内部区块
在 Gutenberg 17.6 中,区块现在可以通过 block.json 中的 allowedBlocks 属性注册其允许的内部区块。也许更重要的是,这个属性也通过 blocks.registerBlockType 钩子暴露出来,允许你扩展允许的区块数组。
这在实践层面意味着什么?
你可以在导航菜单内部注册并添加简单的区块,例如购物车链接。或者——如果你感觉特别有冒险精神——添加高级区块,如巨型菜单下拉框。任何区块都可以选择加入此功能,现在是开始探索可能性的好时机。
WordPress Playground 的重大功能更新
WordPress Playground 有几项重大变化。第一个是通过插件目录提供的新 WordPress Playground 区块。
Playground 现在直接在浏览器中支持 WP CLI 和多站点实例。并且 WordPress 项目的几个新领域已内置实时预览,以帮助贡献者通过 Playground 进行测试。
其他亮点包括对 PHP 8.3 以及 mbregex 和 OpenSSL PHP 扩展的支持。
插件依赖
为了纪念已故的 Alex Mills 和 Alex King,一项长达11年的插件依赖系统功能请求已标记为已修复。
是的,你没看错:WordPress 6.5 将处理插件依赖。
此更改允许你在插件中设置一个 Requires Plugins 标头,列出你的插件正常工作所需的插件 slugs。也许它也将为目录中类似框架的插件重新打开大门,这类插件自 2016 年以来一直被禁止。
插件和工具
修复 Mac 系统 ZIP 上传的重大变更
最近针对 WordPress 中插件和主题上传器的安全更新导致通过 Finder > 压缩命令在 Mac 电脑上创建的 ZIP 包出现问题。如果用户尝试将此类压缩的 ZIP 文件上传到 WordPress 站点,将呈现错误消息并声明其为“不兼容的存档”。核心贡献者已经修补了此问题,修复将在下一个版本中提供——无论是 6.4.4 还是 6.5,以先发布的为准。
在此之前,你必须使用命令行工具或构建脚本来创建 ZIP 文件,然后再直接上传到 WordPress。
block.json 的视图样式表支持
在 WordPress 6.5 中,你将能够通过 block.json 中的 viewStyle 属性为区块定义样式表。它的工作方式类似于现有的 viewScript 属性,并且只会在站点的前端加载。
JavaScript 模块 API
WordPress 6.5 将附带一个新的 API,用于注册和排队 JavaScript 模块。它的工作方式类似于脚本和样式,并包含两个新函数:
wp_register_script_module()wp_enqueue_script_module()
不过,它们与对应的脚本函数并不完全相同,并且是为了满足加载 ES 模块的需求而定制的。此第一个版本有意进行了限制,不包括取消注册的支持。在变更集的说明中了解更多信息。
HTML API 元素支持更新
WP_HTML_Processor 类将在 WordPress 6.5 中提供更多元素支持。过去一个月添加的元素包括:
LI,OL,UL,DD,DL,DTHRAREA,BR,EMBED,KEYGEN,WBRINPUTPRE,LISTING
字体库更新
Gutenberg 17.6 中新增了一些函数来扩展字体库,并使开发者的管理更加容易。一个重大变化是,你现在可以使用 wp_unregister_font_collection() 函数取消注册字体集合。
要获取有关站点上存放字体的目录的路径信息,你可以使用新的 wp_get_font_dir() 函数。它伴随着 fonts_dir 钩子,允许你控制字体的上传目录。
还有一个编辑器设置可以禁用字体库 UI。以下是用于禁用它的一段 PHP 代码:
add_filter( 'block_editor_settings_all', 'pluginslug_editor_settings' );
function pluginslug_editor_settings( $editor_settings ) {
$editor_settings['fontLibraryEnabled'] = false;
return $editor_settings;
}
REST API
虽然附件技术上支持自定义分类法,但 REST API 一直不支持更新其分类项。这个缺失的环节现在得到了解决。在 WordPress 6.5 中,分类项可以通过 REST API 更新。
如果插件或功能通过 REST API 调用检索模板列表,现在返回的负载会包含 original source 和 author_text 字段。
交互性 API
交互性的公共 API 已通过几个新指令得到增强:
wp-data-on-window和wp-data-on-document可以与事件监听器结合使用。data-wp-each可用于循环遍历要显示的数据集。wp-run指令与新的 React 钩子useInit()和useWatch()一起使用时,允许你定义自定义逻辑,以便在渲染带有指令的元素时执行。
此外,为了设置初始的自定义区块属性值,贡献者简化并引入了 wp_interactivity_state() 函数来替代冗长的 wp_store()。
你可以关注 GitHub 跟踪工单以了解使交互性 API 公开的进展。在撰写本文时,50 项任务中的 30 项已经完成。
区块钩子 API
Gutenberg 17.6 中的一项更新创建了一种机制,用于在导航区块内部渲染被钩住的内部区块。此更新应该能让你无问题地钩入自定义区块。
在 WordPress trunk 中,引入了一个新的钩子用于过滤特定的被钩住区块:hooked_block_{$block_type}。
文章类型的脚注支持
Gutenberg 17.6 中,脚注支持已扩展到包含更多文章类型。此支持将适用于任何满足以下条件的文章类型:
- 是公开的且对 REST API 可用。
- 支持
editor、custom-fields和revisions功能。
新钩子
在 WordPress 6.5 中,当用户通过 new_admin_email_subject 钩子更改管理员电子邮件地址时,开发者可以更改将发出的电子邮件的主题行。
主题
需要测试:降低样式特异性
样式引擎有几项重大更改可能会影响现有的主题设计,因此这两项都需要尽快进行彻底测试。请在相应的工单上留下反馈。
第一项更改最近已进入 WordPress trunk,并将随 WordPress 6.5 发布。它降低了编辑器中区块样式变体选择器的特异性。请务必针对你添加到 theme.json 的任何区块样式自定义来测试此更改。
Gutenberg 插件还有一个草案 PR,将降低全局样式选择器的特异性。这更有可能影响主题,并且需要反馈才能发布。此更改将为其他功能(如配色方案和字体集)奠定基础。
区块设置和设计工具
最近的几个 Gutenberg 版本继续为各种区块添加设置和设计工具支持。在 WordPress 6.5 于三月发布之前,现在是开始测试这些功能并在你的模式和模板中集成支持的好时机。
- 区块现在可以选择支持宽高比,并且 Cover 区块现已默认支持此功能。
- 文章导航链接区块在 UI 中有一个新的分类法过滤器。如果选择了分类法,则“下一篇文章”和“上一篇文章”链接将仅链接到在该分类法中共享相同分类项的文章。
- Pullquote 区块现在支持内边距和外边距,可以在区块级别或在
theme.json中定义。 - 一个新的阴影控件将出现在 UI 中,位于效果面板下,适用于选择支持盒阴影的区块,例如 Button。
theme.json 中的默认字体大小选项
主题作者面临的一个持续问题是无法完全禁用默认字体大小及相关问题。Gutenberg 17.5 添加了一个新的 settings.typography.defaultFontSizes 布尔值,你可以用它来禁用核心字体大小,但在导致另一个错误后被还原。另一个补丁已被起草以解决这些问题。
模式
新的 audio 和 videos 模式类别将在 WordPress 6.5 中可用,用于对你的主题模式进行分组。这将完善可用的特定媒体类别:
audiogallerymediavideos
站点编辑器中的分组模板
如果你打开外观 > 编辑器 > 模板,并想知道你的自定义(即非默认)模板去了哪里,不用担心。Gutenberg 17.6 现在将所有自定义模板分组在自定义模板部分下。特定于插件的部分也应该存在(取决于它们注册模板的方式)。
值得注意的用户界面变化
Gutenberg 17.5 在 Gallery 区块的 UI 中添加了一个新的随机顺序设置。这更像是一个面向用户的功能,恢复了经典时代的一个旧设置。但你当然可以在主题的自定义模式中启用它。
启用图片灯箱功能的控件已从侧边栏中移除,并放置在编辑器工具栏的链接控件内,需要额外点击才能访问。虽然目标是使其更直观,但当用户升级到 WordPress 6.5 时,此更改最初可能会让他们感到困惑。请务必告知他们新位置,以确保平稳过渡。
头像对齐问题已修复
如果你遇到 Avatar 区块无法正确左/右对齐的问题,此错误已在 Gutenberg 17.6 中修复。
文章特色图片回退
自 Gutenberg 17.5 起,你可以使用文章中的第一张图片作为文章特色图片区块的回退。这是重现经典主题作者多年来实现的功能的首次尝试。它没有 UI,因此你必须在区块标记本身中将 useFirstImageFromPost 属性设置为 true。
资源
常规
如果你之前错过了,这里有几篇值得你花时间阅读的文章:
开发者时间与走廊闲谈
在过去几周,举行了两次新的实时会议,以帮助你提高区块和主题开发技能:
<h3 id="developer-blog