跳到正文
原文
WordPress 开发者博客· Justin Tadlock·· 2026-09-11精选编辑评分72

WordPress 开发者更新汇总:Gutenberg 23.8 与 23.9 改进及 WordPress 7.2 计划

What’s new for developers? (September 2026)

编辑导读

Gutenberg 23.8 与 23.9 带来了可运行的 Code Reference 示例、区块快捷键声明、DataViews 私有 API 移除、PHP-only 区块 schema 支持及多项主题与编辑器改进。

推荐理由

文章汇总 Gutenberg 23.8 与 23.9 的开发者改动,并梳理 WordPress 7.2 的时间安排和兼容调整重点。

上个月是 WordPress 领域颇为热闹的一个月,版本 7.1“Mary Lou”正式发布。此次更新包括响应式样式状态、图标注册等功能。如果你还没更新,现在早就该更新了。如果你还没有了解所有面向开发者的新内容,一定要看看上个月的总览。

此后,我们又迎来了两个新的 Gutenberg 版本:23.8 和 23.9。它们继续在既有工作的基础上进行构建和微调。这些版本中的部分改动,可能没有新增大量 API 那样引人注目,但我预计在未来几个月的 WordPress 7.2 开发周期中,会有许多重大变化。

说到 WordPress 7.2,Beta 1 计划于 2026 年 10 月 20日至 22 日发布,最终版本预计在 12 月 8日至 10 日之间推出。有关完整的发布时间表,请查看 WordPress 7.2 开发周期页面。

与往常一样,你可以运行 WordPress trunk 并搭配最新的 Gutenberg 版本来测试最新改动,或者直接启动一个 Playground 实例,无需进行任何设置。

目录

  1. Highlights
    1. 可运行的代码示例登陆代码参考
    2. 区块变体和转换可以声明自己的键盘快捷键
    3. 可扩展的站点编辑器如今是各项功能必须落地的地方
  2. Plugins and tools
    1. DataViews 移除私有 API
    2. 内部区块模板移入区块设置
    3. 对仅含 PHP 的区块提供 Schema 支持
    4. 统一生成 kebab case 的 slug
    5. 编辑器现在使用管理后台配色方案
    6. Data Views 的时间字段
  3. Themes
    1. 修复 States 的 theme.json schema
    2. 优化样式界面的更多选项
    3. “
    4. 全局样式中的引用、文本输入和选择下拉框可编辑
    5. 为 Group 添加垂直和水平区块间距
    6. 更新区块支持
    7. 全局样式及其他修复
  4. Playground
  5. Resources
    1. 开发者博客
    2. 常规

亮点

可运行的代码示例登陆代码参考

代码参考现在会在浏览器中运行示例。打开类似 WP_HTML_Processor::class_list() 的页面,点击 运行,代码片段就会在由 Playground 驱动的真实 WordPress 安装环境中执行。 

示例直接使用名为 php interactive 的代码围栏写在 DocBlock 中:

<?php
/**
 * Generator for a foreach loop to step through each class name for the matched tag.
 *
 * ```php interactive
 * $p = new WP_HTML_Tag_Processor( "<div class='free &lt;egg&gt;\tlang-en'>" );
 * $p->next_tag();
 * foreach ( $p->class_list() as $class_name ) {
 *   echo "{$class_name} ";
 * }
 * // Outputs: "free <egg> lang-en "
 * ```
 */
public function class_list() {}

这意味着可运行示例与函数文档位于同一个文件中。这个想法作为文档提案,已在文档问题跟踪器中开放了一段时间。

区块变体和转换可以声明自己的键盘快捷键

Gutenberg 23.9 新增了一个用于声明区块键盘快捷键的 API。自 2022 年起,按 Alt+Shift+2 就能将段落转换为二级标题,但这一行为原先被硬编码在一个私有组件中,每个编辑器包都必须自行渲染该组件。

这里有两个声明位置,二者的键名有所不同。变体使用单数形式的 shortcut 对象:

wp.blocks.registerBlockVariation( 'core/heading', {
	name: 'h2',
	title: 'Heading 2',
	attributes: { level: 2 },
	isActive: ( blockAttributes ) => blockAttributes.level === 2,
	shortcut: {
		name: 'core/block-editor/transform-to-heading-2',
		description: __( 'Transform the selected block into a heading 2.' ),
		keyCombination: { modifier: 'access', character: '2' },
	},
} );

转换在类型为‘block’的转换中使用复数形式的 shortcuts 数组,另外还可选择使用 variationName,这样一个转换可以携带六个快捷键,而不必在区块切换器中出现六次。

可扩展的站点编辑器如今是各项功能必须落地的地方

Gutenberg 23.9 为面向 Site Editor v2 的 Boot 包合入了大约二十个 PR,包括身份路由、带有全局样式编辑功能的主题预览页面、已注册插件的挂载、实体记录之间的画布导航、未保存更改警告,以及根据主题支持情况启用主题界面。你可以关注可扩展站点编辑器的迭代问题以了解进展。

贡献指南现在要求站点编辑器功能也必须在可扩展站点编辑器中落地。

该功能目前仍处于实验阶段,但如果你扩展了站点编辑器,值得密切关注这一进展。

插件与工具

DataViews 移除私有 API

如果你已将 @wordpress/dataviews 打包到插件中,可能遇到了 Cannot unlock an object that was not locked before。原因在于,DataViews 以捆绑包形式发布,却会调用私有 API,而同一运行时中的两个 @wordpress/private-apis 副本无法解锁彼此的对象。DataViews:移除所有私有 API 用法记录了相关修复,最终彻底从包中移除 @wordpress/private-apis。

一个好处的副作用是,DataViews 所依赖的组件如今都有了公开的归属。Calendar 和 RangeCalendar 被移入 @wordpress/ui,而不是被复制;withIgnoreIMEEvents 被纳入 @wordpress/keycodes,ValidatedInputControl 现在也已公开。其他八个 Validated* 控件则被引入 DataViews,作为内部代码。但如果你之前一直关注某个被私有 API 墙挡住的 Core 组件,那么现在其中又有几个只需导入即可使用。

内部区块模板移入区块设置

Gutenberg 23.8 新增了 template 和 templateInsertUpdatesSelection 这两个区块类型设置,取代了同名的 <InnerBlocks> props:

registerBlockType( 'core/list', {
	template: [ [ 'core/list-item' ] ],
	templateInsertUpdatesSelection: true,
	// …
} );

这一变化源于实时协作工作的持续推进。基于 prop 的路径会在挂载后、每个连接客户端上应用模板,因此,在文档中有三名协作者时插入一个 List 区块会生成三个列表项。将声明移入区块类型设置,意味着区块及其模板通过一次存储操作一并落地。

大约二十个核心区块已完成迁移。这些 props 仍然可用,但已被弃用,因此如果你的区块包含内部区块模板,最好在 7.2 发布前完成更改。

支持仅使用 PHP 的区块

autoRegister 标志现已进入 block.json schema。这意味着代码编辑器现在能为这一功能提供自动补全和验证;该功能实际上从 WordPress 7.0 起就已可用。若需完整参考,2026 年 3 月发布的“仅使用 PHP 的区块注册”开发说明仍是最佳概览。

统一生成 kebab case 标识符

WordPress Core 的 _wp_to_kebab_case() 所采用的语义与许多现成库不同,尤其是在处理数字时。现在它以 @wordpress/kebab-case 包的形式提供,而不再作为 JavaScript 端的私有实用工具。

在 JS 中使用会得到与 PHP 相同的输出:

kebabCase( 'white2white' ); // 'white-2-white'
kebabCase( 'font2xl' );     // 'font-2-xl'
kebabCase( 'white4th' );    // 'white-4th'

编辑器现在使用管理后台配色方案

文章编辑器、组件编辑器和自定义器组件编辑器现在都包裹在一个 ThemeProvider 中,其初始值取自当前启用的管理后台配色方案。

对扩展开发者而言,其优势在于 getAdminThemeColors() 是 @wordpress/admin-ui 的公开导出项。它会读取 admin-color-* 的 body class,并返回主要颜色和背景色值,这意味着你可以在自己的管理后台界面中采用同样的两行包裹代码,让设计系统组件自动采用用户选择的配色方案。

Data Views 的时间字段

Gutenberg 23.8 新增了 time 字段类型和控件。它适用于营业时间、活动开始时间、预订时段等场景,或任何值表示一天中某个时刻的场合。请注意,其中不包含日期。

值存储为 HH:mm 或 HH:mm:ss,因此无论访问者处于哪个时区,9:00am 都显示为 9:00am。若要表示特定时刻,datetime 仍是合适的类型。

主题

状态主题.json schema 修复

响应式样式和伪类状态随 WordPress 7.1 推出,但用于验证它们的 schema 并不完整。Gutenberg 23.8 落地了多项修复。

这些更改将确保在代码编辑器中查看 theme.json 时,状态不会被判定为无效:

  • 样式变体的响应式状态
  • 响应式状态专属于区块(而非元素)
  • 修复伪类样式中的错误

样式整理界面的更多选项

Gutenberg 23.8 为区块样式状态控件添加了选择退出选项:一个 blockStatesEditingEnabled 和 responsiveEditingEnabled。两者都可以通过 block_editor_settings_all 进行筛选:

add_filter( 'block_editor_settings_all', function ( $settings ) {
	$settings['blockStatesEditingEnabled'] = false;
	$settings['responsiveEditingEnabled']  = false;
	return $settings;
} );

两者默认均为 true。无论采用哪种方式,已在 theme.json、全局样式或区块的 style 属性中定义的样式仍会继续呈现。这使它们非常适合在锁定客户端构建版本的同时,不破坏随其交付的设计。

Gutenberg 23.9 添加了 <label> 作为可通过 theme.json 设置样式的新元素。你可以像设置其他元素样式一样,通过 styles.elements.label 对其进行自定义。它适用于呈现 <label> 的任何标记。在 Core 中,这涵盖了搜索、表单输入、帖子评论表单、归档和分类区块。它也适用于第三方区块。

引用、文本输入和选择下拉框可在全局样式中编辑

cite、textInput 和 select 此前已经可通过 theme.json 使用。但最近的一项 PR 使它们可以在编辑器的样式界面中,通过排版和颜色面板进行编辑。

Group 区块新增垂直和水平区块间距

Group 区块现在将其 blockGap 支持同时声明为水平和垂直。这意味着 theme.json 中的 blockGap 属性既接受普通字符串,也接受包含 top 和 left 键的对象。

编辑器界面仍会将轴向控件限制为 flex 和 grid 布局,而这正是分离各轴发挥作用的地方。

更新区块支持

一些区块获得了新的支持项,更便于在各种布局中使用:

  • 列表:宽对齐和完整对齐
  • 查询无结果:边框和间距
  • 查询循环:区块间距(这一项早就在我的愿望清单上了!)

全局样式及其他修复

另外还完成了其他几项较小但值得关注的改动:

  • 手风琴标题区块现在会将 theme.json 中的间距设置应用到切换按钮,而不是包装器。
  • 双色调色板可在全局样式中编辑。
  • 全局样式还会标示哪些区块拥有自定义样式,并允许按这些样式进行筛选。
  • 当存在自定义预设时,阴影预设仍会存储为 CSS 变量,这会影响用户保存的样式中最终包含的内容。
  • blockGap 值的规范化更加一致。请注意,清理程序会拒绝括号,因此字面量 calc() 或 var() 值会被丢弃。
  • 目录区块不再将其输出保存到帖子内容中。

Playground

Playground 现在支持 WebMCP,这是一项浏览器 API 草案,可将操作公开为 AI 智能体能够调用的工具。由于 Playground 在嵌套 iframe 中运行 WordPress,新的代理会在外层页面上公布嵌入站点的工具,并将调用转发回去。请注意,仅注册 WordPress ability 本身并不够。插件必须将其封装为 WebMCP 工具。

Playground 还可以运行早至 0.7 版本的发行版。在设置面板中勾选包括旧版本,选择器就会涵盖截至 6.2 的所有版本,并自动匹配 PHP。这对于回答“这东西是什么时候坏的?”很有用,无需手动重建旧技术栈。

资源

开发者博客

自上次月度综述以来,我们只发布了一篇文章。如果你错过了,不妨看看:

  • WordPress 7.1 图标注册 API 实践

综合

过去一个月中还有这些文章值得一读:

  • Gutenberg 23.8 有哪些新变化?
  • Gutenberg 23.9 有哪些新变化?
  • 提案:为 WordPress 7.2 打造 Secrets API
  • 替换管理栏和菜单中的 Dashicons
  • WordPress Playground 与 WebMCP:将 AI 智能体引入你的浏览器工作流
  • WordCamp US 2026:PHP 对话
  • WordPress 7.1 发布回顾
  • Core 安全计划

感谢 @welcher 为本文提供反馈和审阅。

来源:WordPress 开发者博客 · https://developer.wordpress.org/news/2026/09/whats-new-for-developers-september-2026/

部分链接为推广/关联链接。