开发者有哪些新动态?(2023年11月)
WordPress 6.4 已于2023年11月7日成功发布,这是今年的最后一个主要版本。如果你还没有这样做,现在测试你的插件和主题以确保一切运行顺畅,为时未晚。
你最应该查看的是 WordPress 6.4 现场指南。它将引导你了解最新版本中所有你需要知道的主要变化。
本期月度综述的大部分内容将包含已在 WordPress 6.4 中落地的更改。如果你还在追赶进度,请继续阅读。你还将了解到一些仍在开发中的功能,因此请务必安装并激活最新版本的 Gutenberg 插件来测试它们。
亮点
为几乎所有区块支持重命名

自 Gutenberg 16.9 起,你可以在 WordPress 的 UI 中重命名几乎所有区块。自定义区块名称作为元数据存储在区块标记中,这意味着它们也可以移植到模式和模板中。通过使用这个新功能,你可以极大地改善可能在站点编辑器中编辑你的主题的用户的体验。
有几个特殊区块禁用了重命名功能:
core/blockcore/template-partcore/patterncore/navigation
实验性的表单和输入区块

Gutenberg 16.9 引入了实验性的 core/form 和 core/form-input 区块。这些可能成为未来需要前端表单字段的插件的基础。
Gutenberg 17.0 增加了对在表单区块内使用群组和列区块的支持。
该功能目前处于高度实验阶段,除了基本测试外,尚未准备好用于其他用途。你可以通过 Gutenberg > 实验 管理屏幕启用它。现在是表单插件开发者开始测试并参与其开发的理想时机。
数据视图工作持续进行

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 常量已弃用
虽然长期以来不鼓励扩展开发者使用 TEMPLATEPATH 和 STYLESHEETPATH 常量,但核心代码中仍有几处使用了它们。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.TabListTabs.TabTabs.TabPanel
Create Block 包引入 transformer 属性
Create Block 包现在有一个新的 transformer 属性。此更改将自定义工作转移到了模板,几乎完全控制了如何使用它们来创建插件或区块。
通过 getEntityRecords() 获取分页数据
自 Gutenberg 16.9 起,getEntityRecords() 在每次调用时返回总条目数和页数。它们存储为 totalItems 和 totalPages 属性。这些数据也可以通过 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 中收到了几项更新:
- 你现在可以使用
matches_breadcrumb()方法 进行更好的查询。 - 有两个新的用于类处理的实用方法:
class_list()和has_class()。 WP_HTML_Processor::createFragment()方法被重命名为create_fragment()以遵循 WordPress 编码标准。- 当移除属性时,处理器现在能正确移除重复项。
HTTP API 弃用
如果你正在使用 HTTP API,请检查这些 WordPress 6.4 的类和钩子弃用情况,并在必要时更新你的代码:
通过新参数绕过 WP_Term_Query 缓存
WordPress 6.4 为 WP_Term_Query 类引入了一个 cache_results 参数。此更改使其与 WP_Query 和 WP_User_Query 保持一致,允许你绕过查询缓存。
登录和注册更新
WordPress 6.4 中对登录和注册页面进行了一些更改:
/login.phpURL 现在成为登录页面的别名。- 对登录和注册通知及错误的 HTML 进行了几项改进。
- 一些新的 CSS 类被添加到页面上的链接:
.wp-login-log-in.wp-login-register.wp-login-lost-password
如果你的插件或主题以任何方式自定义这些页面,请确保针对这些更改进行测试。你可以在开发说明中阅读更多关于更新的信息。
KSES 更新
WordPress 6.4 中的 wp_trigger_error() 函数现在通过 wp_kses() 传递内容,允许有限的 HTML 子集:
<a href>(允许http和https协议)<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 属性启用它们。容器查询单位仍然不受支持,尽管浏览器支持度几乎一样高(但在手动定义间距和字体大小预设时可以使用)。
模式更新
在开发中,你应该注意两个变化:
- 添加了一个新的
wp_pattern_category分类法(链接到wp_block文章类型),用于存储用户创建的模式。 media模式类别已拆分为单独的audio和videos类别(已存在一个gallery类别)。
以下更改在用户界面内,应使创建和测试模式更容易:
WordPress 中的术语描述区块
随着 6.4 版本的发布,术语描述区块已被移植到 WordPress 中,这意味着你可以在主题模板和模式中开始使用它。以前,它仅在 Gutenberg 插件中可用。
错误修复
你现在可以享受过去几个 Gutenberg 版本中落地的几个错误修复:
- 针对经典主题,修复了灯箱功能中按钮元素的 CSS 错误。
- 添加了屏幕阅读器标题文本,并实现了使用
excerpt_more钩子的替代方案,以避免覆盖主题。 - 查询循环区块的增强分页功能收到了几项修复:
- 布局支持和双色调支持现在都能与增强分页一起工作。
- 该区块现在为增强分页的
aria-live区域使用现有的screen-reader-textCSS 类。 - 如果检测到第三方区块,则禁用增强分页。
活动和资源
Learn WordPress
在过去的一个月里,Learn WordPress 网站上发布了五个新教程:
开发者时间与走廊闲聊
<p class="wp-block