社区新闻

开发者新动态(2024年3月)

WordPress 6.5 将于 3 月 26 日发布,现在是开始测试和探索众多新功能的绝佳时机。

第一个候选版本(RC1)已于 3 月 5 日发布,标志着 6.5 开发周期进入最后阶段。除非出现需要在后续候选版本(RC2 或 RC3)中修复的关键问题,否则这将是最终的公开版本。

无论您是插件或主题开发者、为客户构建网站还是维护自己的网站,测试 RC1 都至关重要。您不仅可以开始探索新的增强功能,严格的测试还将有助于确保稳定性和向后兼容性,并在正式发布前解决任何潜在问题。

考虑到即将发布的版本范围,了解要测试什么可能具有挑战性。本文将引导您,同时官方现场指南(即将发布)也会提供帮助。如果您确实发现问题,请务必在GitHubTrac 上报告。

虽然我将主要关注 WordPress 6.5 中的功能,但开发永不停歇。贡献者已经在为 WordPress 6.6 及更高版本的未来改进奠定基础。不可能涵盖所有内容,但您应该对 WordPress 和 Gutenberg 即将发布的版本有一个扎实的了解。如果您还没有阅读,我也鼓励您阅读上个月的“开发者新动态?”文章。

一如既往,请确保您在开发环境中运行 WordPress trunk 和最新版本的 Gutenberg 插件,以测试以下更新。

重点内容

交互性 API

交互性 API 已正式合并到核心中,并将很快在 WordPress 6.5 中公开可用。团队一直在努力使 API 为发布做好准备,最近进行了一些值得注意的更改:

大部分重点都放在改进文档并将其移至块编辑器手册上。未来几周计划进行更多工作。

要了解更多关于交互性 API 的信息,请查看最新的WP Briefing 剧集或参加 3 月 12 日星期二的下一次开发者时间活动。会议录制内容将上传到 WordPress.tvYouTube

网格布局变体

Group 块的网格变体在 Gutenberg 17.8 中得到了显著改进,现在无需实验性标志即可使用。它提供两种布局选项:“自动”,自动创建具有最小项目宽度的行和列;以及“手动”,您可以设置特定的列数。您还可以在网格子项中定义列和行跨度

虽然这不是 WordPress 6.5 的一部分,但请开始测试以发现此 Group 变体解锁的设计可能性。

字体库

字体库最初计划用于 WordPress 6.4,最终将包含在 WordPress 6.5 中。它简化了您网站上的排版管理,允许您像管理媒体文件一样添加和管理字体,无论您使用什么主题。您可以轻松安装本地字体和 Google 字体,并且该系统设计为可扩展,使您能够添加自定义字体集合。

根据设计,上传的字体将存储在 wp-content 内的 fonts 目录中。关于此位置的优点存在一些争论uploads 是另一个建议。项目领导介入并决定使用 wp-content

此外,在过去的 Gutenberg 版本中还进行了一些值得注意的增强:

数据视图项目

数据视图项目随着每个 Gutenberg 版本不断发展,WordPress 6.5 将包含初始实现。最近的关键改进包括在网格视图中引入批量操作过滤器重新设计,以及在模式屏幕上默认显示同步状态过滤器

您可以在站点编辑器中通过导航到模式、模板、模板部件或页面管理屏幕来测试此新功能。

外展计划

一月份,提出了一项提案,将 FSE 外展实验的重点转向针对开发者和设计师的更广泛外展计划。上个月通过一次走廊闲谈开始了过渡,贡献者在会上讨论了后续步骤。

因此,Slack 频道从 #fse-outreach-experiment 更名为 #outreach,并建立了一个新的 GitHub 群组 WordPress/outreach

寻求对其拉取请求(PR)额外反馈或测试的贡献者现在可以 ping @WordPress/outreach 寻求帮助。有兴趣为此计划做出贡献的人可以通过在 #outreach Slack 频道中留言请求加入该群组。

插件和工具

插件目录中核心块的提案

Gutenberg 的首席架构师 Matías Ventura 在 Gutenberg 仓库中发起了一场讨论,探讨在插件目录中开发核心块。这种方法满足了可能不适合直接放入 WordPress 核心的专业化块的需求。

想法是这些块由 WordPress 贡献者在 Gutenberg 仓库中创建和维护,但可以通过块目录(插件目录的一个子集)提供插入。如果您对此主题感兴趣,请查看提案并分享您的反馈。

插件依赖项

如上个月的文章所述,从 WordPress 6.5 开始,插件可以通过 Requires Plugins 标头指定所需的依赖项。最近发布的合并公告帖子包含了所有细节。

一个值得注意的变化是,由于社区担忧,当依赖项未满足时自动停用插件的功能已被省略。

脚本模块 API

在脚本模块 API 于 WordPress 6.5 首次亮相之前,相关工作一直在继续。最大的变化之一是重命名block.json 中的 viewModule 属性为 viewScriptModule。如果您当前有块使用 viewModule 来排队模块脚本,一切将继续工作,但该属性现已弃用,您应切换到 viewScriptModule

@wordpress/create-block 包的交互式模板也已更新以反映这些更改。

如果您当前在 WordPress 项目中使用 JavaScript 模块或对交互性 API 感兴趣,请务必查看全面的6.5 中的脚本模块帖子,深入了解所有技术细节。

块绑定 API

块绑定 API 是 WordPress 6.5 中最令人兴奋的新功能之一,过去几周添加了一些最后的润色。最重要的变化是,现在默认禁用编辑绑定块。

有关块绑定的更多信息,请查看开发者博客上的介绍性教程

上个月的文章强调,块可以使用 block.json 中的 allowedBlocks 属性指定其允许的内部块,并且可以使用 blocks.registerBlockType 钩子修改此属性。WordPress 6.5 中的这一增强功能允许开发者在导航块中包含几乎任何块。但是,由于导航块使用无序列表,自定义块可能无法正确包装在 <li> 元素中。

为了解决这个问题,Gutenberg 17.7 引入了 block_core_navigation_listable_blocks 过滤器。此过滤器确保导航块中使用的自定义块被正确包装在 <li> 元素中,以实现正确的渲染和可访问性。如果您要在没有 <li> 包装器的情况下向菜单添加自定义块,可以使用以下代码片段自动应用它。

function add_icon_block_to_needs_list_item_wrapper( $blocks ) {
    $blocks[] = 'example-block/custom-icon';
    return $blocks;
}
add_filter( 'block_core_navigation_listable_blocks', 'add_icon_block_to_needs_list_item_wrapper' );

修改代码块的插件

在 Gutenberg 17.1 中,一项更新将换行符规范化为序列化为 HTML 元素,这无意中破坏了一些直接修改代码块输出的语法高亮插件。应该跨多行高亮显示的代码反而出现在单行上。

有一个开放的 PR 解决了换行问题,并计划用于 WordPress 6.5。但是,在扩展核心代码块时,您的插件应正确处理任何有效的 HTML。对于那些使用 PrismJs 进行语法高亮的用户,有一个扩展可以用来保留标记。请参阅原始问题以了解更多信息。

脚注元注册

WordPress 6.5 中脚注元的注册优先级已从 10 提高到 20。此调整确保为大多数文章类型(包括自定义类型)注册脚注,这些类型通常在优先级 10 注册。对于那些需要更改脚注元的特定需求,重要的是使用高于 20 的优先级以确保您的修改被应用。

从 WordPress 6.5 开始,您将能够使用符号链接来注册使用 block.json 文件和 register_block_type() 的块。在此更新之前,虽然可以使用符号链接注册块,但 block.json 中指定的 editorScripteditorStyle 文件将无法排队。

七年前,Trac 中开了一个问题,指出虽然音频和视频附件可以有特色图片,但 REST API wp/v2/media 端点未返回 featured_media。这在 WordPress 6.5 中已修复。

Storybook 更新

如果您不熟悉 Storybook,它是 WordPress 包中开发的用户界面组件的绝佳参考,尤其是 @wordpress/components 包。您可以在自己的插件和编辑器扩展项目中使用这些组件。

Storybook 会随着每个 Gutenberg 版本定期更新,最近添加了徽章,使确定哪些组件是“私有的”且不应在自定义开发中使用变得更加容易。

PHP 自动加载器

二月初,提出了一项提案,建议在 WordPress 核心中添加 PHP 自动加载器。这个复杂的话题可以追溯到八年前创建的一个工单。如果您感兴趣,请阅读提案并分享您的想法。您的反馈对于确定项目的未来方向至关重要。

主题

同步模式覆盖

同步模式覆盖继续得到增强。Gutenberg 17.7 中的最新更新包括块工具栏中的一个按钮,允许用户重置模式,并且添加了对按钮块中 linkTargetrel 属性的支持。

此外,模式覆盖的数据结构已更改。覆盖以前使用 overrides 属性存储。这已更新为 content 属性,这将为未来提供更大的灵活性。如果您已经在试验此功能,任何使用 overrides 属性的现有模式将继续工作。

如果您有兴趣了解更多关于此功能的信息,请确保关注 GitHub 上的主要问题

阴影支持

在 WordPress 6.5 中,您可以直接从编辑器向列、列和图像块添加阴影。虽然进行了改进,但此功能以前仅限于按钮块。值得注意的是,阴影控件现在位于边框面板中,对于支持该功能的块,该面板重命名为“边框和阴影”。

WordPress 确实提供了一组默认阴影,但您可能希望添加自己的阴影。如果您需要复习如何在 theme.json 中定义自定义阴影,请查看开发者博客上的相应文章。您也可以测试以下代码片段。

{
	"version": 2,
	"settings": {
		"shadow": {
			"presets": [
				{
					"name": "Small",
					"slug": "sm",
					"shadow": "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)"
				},
				{
					"name": "Medium",
					"slug": "md",
					"shadow": "0 4px  10px 0 rgba( 0, 0, 0, 0.3 )"
				},
				{
					"name": "Large",
					"slug": "lg",
					"shadow": "0 8px  15px 0 rgba( 0, 0, 0, 0.3 )"
				}
			]
		}
	}
}

限制模板部件和内容块

从 Gutenberg 17.8 开始,模板部件和