社区新闻

开发者有哪些新动态?(2023年11月)

WordPress 6.4 已于2023年11月7日成功发布,这是今年的最后一个主要版本。如果你还没有这样做,现在测试你的插件和主题以确保一切运行顺畅,为时未晚。

你最应该查看的是 WordPress 6.4 现场指南。它将引导你了解最新版本中所有你需要知道的主要变化。

本期月度综述的大部分内容将包含已在 WordPress 6.4 中落地的更改。如果你还在追赶进度,请继续阅读。你还将了解到一些仍在开发中的功能,因此请务必安装并激活最新版本的 Gutenberg 插件来测试它们。

亮点

为几乎所有区块支持重命名

并排显示的两个面板。第一个是用于自定义区块名称的重命名字段。第二个是区块编辑器中的列表视图,其中突出显示了要重命名的区块。

自 Gutenberg 16.9 起,你可以在 WordPress 的 UI 中重命名几乎所有区块。自定义区块名称作为元数据存储在区块标记中,这意味着它们也可以移植到模式和模板中。通过使用这个新功能,你可以极大地改善可能在站点编辑器中编辑你的主题的用户的体验。

有几个特殊区块禁用了重命名功能:

  • core/block
  • core/template-part
  • core/pattern
  • core/navigation

实验性的表单和输入区块

区块编辑器中的实验性表单区块,包含姓名、电子邮件、评论字段和提交按钮。

Gutenberg 16.9 引入了实验性的 core/formcore/form-input 区块。这些可能成为未来需要前端表单字段的插件的基础。

Gutenberg 17.0 增加了对在表单区块内使用群组和列区块的支持。

该功能目前处于高度实验阶段,除了基本测试外,尚未准备好用于其他用途。你可以通过 Gutenberg > 实验 管理屏幕启用它。现在是表单插件开发者开始测试并参与其开发的理想时机。

数据视图工作持续进行

WordPress 站点编辑器查看“所有页面”子屏幕,该屏幕以表格形式列出了五个页面。有几个字段用于根据各种元数据组织页面。

Gutenberg 插件中朝着全面改造管理界面设计的工作仍在继续,特别是在页面管理和数据视图方面。要测试最新更改,你必须通过 Gutenberg > 实验 管理屏幕启用 新管理视图 选项。

过去一个月里,插件中落地了数十项更改——数量太多,无法在此一一列举。要查看代码更改,请参阅 Gutenberg 仓库中已关闭的数据视图工单

管理界面重新设计将是用户体验的一次重大变革,并最终会在未来的 WordPress 版本中影响许多插件。这些变化不容忽视。尽早并经常进行测试,同时在此过程中提供反馈非常重要。

主要变化

新安装默认禁用附件页面

随着 WordPress 6.4 的发布,新安装的站点将禁用附件页面。我重申:这仅适用于新安装。

此更改添加了一个名为 wp_attachment_pages_enabled 的新数据库选项,对于新安装设置为 0,对于现有安装设置为 1。你可以通过 option_{$option}pre_option_{$option} 过滤器钩子来过滤此选项。

前端没有用于重新启用附件页面的 UI 选项(除了通过隐藏的 wp-admin/options.php 屏幕),但原始 Trac 工单中链接了一个插件,供那些希望为新安装启用附件页面的人使用。

TEMPLATEPATH 和 STYLESHEET 常量已弃用

虽然长期以来不鼓励扩展开发者使用 TEMPLATEPATHSTYLESHEETPATH 常量,但核心代码中仍有几处使用了它们。WordPress 6.4 现已正式弃用它们

此更改不应影响目录中的主题,因为如果主题使用了这些常量,主题检查插件会阻止主题提交。如果你在目录外的主题或插件中使用它们,则应切换到其基于函数的对应项:

  • get_template_directory()
  • get_stylesheet_directory()

插件和工具

从 @wordpress/element 转向 React

始于2023年8月的讨论之后,贡献者们在 Gutenberg 16.8 中做出了直接使用 React 而不是 @wordpress/element 包装器的决定。一些文档已更新以反映此更改。

文章元数据修订框架

WordPress 6.4 附带了一个新的用于存储文章元数据修订的框架。该功能是选择加入的,你必须将 register_post_meta()revisions_enabled 参数设置为 true 来启用它。还有几个动作和过滤器钩子可用于进一步自定义修订的工作方式。

新的 PluginPostExcerpt 插槽

Gutenberg 16.9 引入了 <PluginPostExcerpt /> 插槽。这个新插槽允许你扩展文章编辑器中的 摘要 面板以添加自定义组件。

新的 Tabs 组件以替换 TabPanel

Gutenberg 16.9 中添加了一个新的 <Tabs /> 组件。它作为现有 <TabsPanel /> 组件的替代品,并具有三个子组件:

  • Tabs.TabList
  • Tabs.Tab
  • Tabs.TabPanel

Create Block 包引入 transformer 属性

Create Block 包现在有一个新的 transformer 属性。此更改将自定义工作转移到了模板,几乎完全控制了如何使用它们来创建插件或区块。

通过 getEntityRecords() 获取分页数据

自 Gutenberg 16.9 起,getEntityRecords() 在每次调用时返回总条目数和页数。它们存储为 totalItemstotalPages 属性。这些数据也可以通过 useEntityRecords() 钩子自动获取。

新的文件系统 API 钩子

WordPress 6.4 中的文件系统 API 有两个新的过滤器钩子,在解压缩存档的过程中触发:

  • pre_unzip_file 允许你短路该过程并运行自定义流程。
  • unzip_file 在解压缩存档的结果上运行。

新的 block_hooks 字段

WordPress 6.4 在区块类型注册和 REST API 中引入了一个新的 block_hooks 字段。这个字段对于引入新的 区块钩子 API 是必需的,该功能为动态区块提供了一种可扩展性机制。

媒体/附件更新

WordPress 6.4 在底层对媒体处理进行了几项更新。第一个是对开发周期早期引入的 get_available_post_mime_types() 过滤器钩子的更改。为了清晰起见,它被重命名为 pre_get_available_post_mime_types。如果你已经在使用这个钩子,请确保更新插件中的任何引用。

wp_get_loading_optimization_attributes() 函数现在支持任意上下文值,而不仅仅是核心支持的那些,允许你在渲染图像时依赖自定义上下文。除了此更新,还有一个新的 wp_loading_optimization_force_header_contexts 过滤器钩子。

还有两个新的过滤器钩子,允许你自定义 wp_get_loading_optimization_attributes() 函数的结果

  • wp_get_loading_optimization_attributes 用于在 WordPress 逻辑之后自定义结果。
  • pre_wp_get_loading_optimization_attributes 用于短路该函数并运行你自己的逻辑。

HTML API 更新

HTML API 在 WordPress 6.4 中收到了几项更新:

HTTP API 弃用

如果你正在使用 HTTP API,请检查这些 WordPress 6.4 的类和钩子弃用情况,并在必要时更新你的代码:

通过新参数绕过 WP_Term_Query 缓存

WordPress 6.4 为 WP_Term_Query 类引入了一个 cache_results 参数。此更改使其与 WP_QueryWP_User_Query 保持一致,允许你绕过查询缓存。

登录和注册更新

WordPress 6.4 中对登录和注册页面进行了一些更改:

如果你的插件或主题以任何方式自定义这些页面,请确保针对这些更改进行测试。你可以在开发说明中阅读更多关于更新的信息。

KSES 更新

WordPress 6.4 中的 wp_trigger_error() 函数现在通过 wp_kses() 传递内容,允许有限的 HTML 子集:

  • <a href>(允许 httphttps 协议)
  • <br>
  • <code>
  • <em>
  • <strong>

writing-mode 也被添加到了安全 CSS 属性列表中。

主题

移除宽高比

Gutenberg 16.9 移除了所有实例中的 10:16 和 16:10 宽高比。这不应影响大多数主题。但你应该检查是否在任何图像模式或模板中使用了此宽高比。

模板部件回退到活动主题

如果模板部件块没有定义 theme 属性,它将自动回退到 get_stylesheet() 的值(当前活动的主题)。

支持 CSS Level 4 视口相对单位

Gutenberg 16.9 引入了对视口相对 CSS 单位的广泛支持。默认情况下它们不暴露,但你可以通过 theme.json 中的 settings.spacing.units 属性启用它们。容器查询单位仍然不受支持,尽管浏览器支持度几乎一样高(但在手动定义间距和字体大小预设时可以使用)。

模式更新

在开发中,你应该注意两个变化:

以下更改在用户界面内,应使创建和测试模式更容易:

WordPress 中的术语描述区块

随着 6.4 版本的发布,术语描述区块已被移植到 WordPress 中,这意味着你可以在主题模板和模式中开始使用它。以前,它仅在 Gutenberg 插件中可用。

错误修复

你现在可以享受过去几个 Gutenberg 版本中落地的几个错误修复:

活动和资源

Learn WordPress

在过去的一个月里,Learn WordPress 网站上发布了五个新教程:

开发者时间与走廊闲聊

<p class="wp-block