WordPress 7.0 开发者指南:核心变更全面解析

Chair

版本发布 — 本文介绍 7.0 版本的主要变更与开发者注意事项。

WordPress 7.0 是一次里程碑式的大版本更新:首次将 AI 能力系统性地引入核心架构,并完成了管理后台的全面现代化改造。本次发布共包含 419 个 Core Trac 工单,其中 76 个为增强和新功能请求超过 300 个 bug 修复40 余个工单聚焦于编辑器90 余个聚焦于 wp-admin。来自 Gutenberg 插件的 411 个增强486 个 bug 修复 也被合并入 Core,覆盖编辑器、仪表盘和 AI 集成各个层面。

本文面向开发者,按五大主题梳理 7.0 中最重要的技术变更与不兼容变更(breaking changes):AI 基础设施、管理后台现代化、创意定制工具、设计工具增强和开发者工具箱,最后补充无障碍改进与其他亮点。本指南发布于 7.0 的 Release Candidate(RC)阶段,旨在帮助开发者提前了解变更并做好适配准备。

一、AI 基础设施:WordPress 进入智能时代

WordPress 7.0 首次内置 AI 能力,采用与供应商无关(provider-agnostic)的架构设计,让站点所有者可以自由选择和切换 AI 服务商。这一基础设施的铺设只是起点——未来还将引入自主代理(agentic collaborator)等更高级的功能。

WP AI 客户端(WP AI Client)

WP AI 客户端为 WordPress 提供了一个中央接口,允许插件与生成式 AI 模型通信,无需关心底层供应商。请求路由由 WordPress Core 统一处理。API 密钥通过 Connectors API 集中管理,在 设置 > 连接器(Settings > Connectors)页面中配置。系统预置若干模型,用户也可以添加自己偏好的模型。

Abilities API 直接集成在 WP AI 客户端内,支持将多种 AI 能力串联为工作流(workflow),一个接一个自动执行。

插件开发者可以利用新的 using_model_preference() 函数声明模型偏好顺序,并通过功能检测(feature detection)匹配可用模型的对应能力,从而降低调用成本、缩短处理时间。AI 客户端还提供一系列高级配置选项,以及 WP_AI_Client_Prompt_Builder 类用于方法调用。为简化升级,wordpress/wp-ai-client 包可自动处理向 7.0 的过渡。

Introducing the AI Client in WordPress 7.0

客户端 Abilities API(Client-Side Abilities API)

7.0 将 Abilities API 扩展到 JavaScript 端,提供 @wordpress/core-abilities@wordpress/abilities 两个包,涵盖新能力和混合能力(hybrid abilities),并配有直观的 UI、命令面板(command palette)以及筛选和查询功能。

插件开发者可通过引入 @wordpress/core-abilities 自动拉取并注册服务端能力(通过 REST API),也可以仅引入 @wordpress/abilities 来处理插件自身的客户端能力。注册后的能力按可自定义的分类组织,能力和分类都可以通过 PHP API 注销。系统支持元数据注解(meta data annotation),core/abilities 提供 useSelect 用于 React 组件中的响应式查询。

Client-Side Abilities API in WordPress 7.0

AI 连接器页面(Connectors Screen)与连接器 API(Connectors API)

在仪表盘的 设置 > 连接器 中,全新的连接器管理页面集中展示所有已注册的连接器及其注册元数据,以卡片形式呈现。系统默认内置三个供应商:Anthropic、Google 和 OpenAI,用户也可以自行配置连接。

Connectors API 是连接器页面的底层扩展机制,支持代理(agent)的接入。API 根据供应商元数据支持两种认证方式(api_keynone),设计上预留了未来扩展更多连接器类型的空间。Connectors API 利用 WP AI 客户端的默认注册表自动发现供应商,通过对应元数据生成连接器;非标准认证方式的连接器存储在 PHP 注册表中。开发者可通过 wp_connectors_init 动作(action)覆盖连接器元数据,这将成为后续版本注册新连接器类型的核心接口。API 提供三个公共函数用于查询注册表,前端 UI 可通过客户端 JavaScript 注册进行自定义。

Introducing the Connectors API in WordPress 7.0

二、管理后台现代化

7.0 全面升级了 WordPress 管理后台的视觉与交互体验。新的 “Modern” 配色方案贯穿整个仪表盘,View Transitions API 带来平滑的页面切换动画,新增的命令面板快捷入口让工具触手可及,字体管理独立成页,可视化修订让编辑历史一目了然。

新后台配色方案 “Modern”

名为 “Modern” 的新后台主题全面刷新了配色、对比度和字体排版(typography)。后台头部、定制器(Customizer)、配色选择器、脚本加载器、各类用户函数,乃至多站点(multisite)用户注册页面,都换上了新皮肤。

View Transitions 在 wp-admin 中的应用

7.0 在 wp-admin 中引入了跨文档视图过渡(cross-document view transitions)。从菜单切换页面时,内容以平滑的滑动效果切换。每个后台菜单项使用独立的过渡名称(transition name),当活动子菜单在页面间变化时触发过渡动画。出于无障碍考虑,如果操作系统层面设置了”减少动态效果”(reduced motion)偏好,视图过渡将不会被激活。

命令面板快捷入口

管理员和登录用户在顶部工具栏右侧可以看到一个新的 Cmd+K(Mac)或 Ctrl+K(Windows)图标。点击后展开命令面板(command palette),可从后台任意位置快速访问编辑工具集。

字体库(Font Library)

字体库在 7.0 中扩展为独立的字体管理页面。团队成员可在同一处管理、上传、安装字体,适用于区块主题(block theme)、混合主题(hybrid theme)和经典主题(classic theme)。

可视化修订(Visual Revisions)

7.0 让修订版本的查看变得直观。用户可以在编辑器中通过滑块(slider bar)直观对比两个修订版本的差异,文档检查器(document inspector)显示变更摘要,每个变更位置标注了颜色和改动大小,点击即可跳转到对应位置。

iframe 编辑器(Iframed Editor)

在 7.0 中,当文章里所有区块(blocks)均使用 Block API v3 或更高版本时,文章编辑器将强制采用 iframe 模式,提供更稳定的编辑体验。如果存在低于 v3 的区块,iframe 将被移除以确保向后兼容。

Iframed Editor Changes in WordPress 7.0

三、创意定制工具

7.0 在创意定制方面提供了更精细的控制力,包括移动端导航叠加层自定义、区块级别的响应式可见性控制,以及区块样板(Pattern)编辑模式的全面增强。

移动端自定义导航叠加层(Navigation Overlays)

汉堡菜单的叠加层(overlay)现在可以通过站点编辑器(Site Editor),用区块和样板自由构建。新增的 Navigation Overlay Close 区块允许在叠加层内任意位置放置并样式化关闭按钮。用户和主题作者可以灵活定义移动端导航体验,支持原地叠加层选择和预览。主题还可以提供默认模板以加速设置。

Customizable Navigation Overlays in WordPress 7.0

响应式编辑模式(Responsive Editing Mode)

7.0 引入了基于设备类型的区块可见性控制。编辑者可以按设备隐藏或显示区块,互不影响其他视口(viewport)。可见性选项的弹窗入口分布在区块工具栏、区块检查器侧边栏和命令面板三处。在列表视图(List View)中,设置了可见性规则的区块旁会显示图标,标明该区块在哪些视口上被隐藏。

7.0 还支持在不同断点(breakpoint)下设置不同样式,并允许自定义断点尺寸。

Block Visibility in WordPress 7.0

区块样板编辑与 contentOnly 编辑模式

7.0 对样板编辑的改进包括:自定义区块支持样板覆盖(Pattern Overrides)、区块样板级别的编辑模式(分别针对上下文样板和符号样板)、按钮和列表区块的父子树视图(parent-child tree view),以及选择退出 contentOnly 模式的能力。

contentOnly 模式此前已在部分样板中应用,7.0 将其设为默认行为,范围也进一步扩大。对于不希望受此限制的未同步样板(unsynced patterns),可通过新的 disableContentOnlyForUnsyncedPatterns 设置或 block_editor_settings_all PHP 过滤器(filter)选择退出。

如果某个区块嵌套在 contentOnly 样板中,插件开发者需要在 block.json 中将代表区块内容的属性(attributes)标注 "role": "content"。这样做可以保留区块的可编辑性,避免其在列表视图中被隐藏。

区块开发者现在可以在 block.json 中添加 "listView": true 的区块支持声明。这会在区块检查器中新增一个 “List View” 标签页,展示该区块的专属视图,方便编辑者更新和自定义。

Pattern Editing in WordPress 7.0

样板覆盖支持自定义区块

支持区块绑定(Block Bindings)的区块属性现在也支持样板覆盖。样板覆盖适用于任意区块(包括自定义区块),可通过 block_bindings_supported_attributes 过滤器选择加入。属性值会呈现在渲染后的区块标记中——无论动态区块还是静态区块。如果静态区块的属性复杂度超出 HTML API 的处理范围,可使用 render_callback() 函数确保绑定属性值正确渲染。

Pattern Overrides in WP 7.0: Support for Custom Blocks

四、设计工具增强

7.0 在区块和设计工具层面带来了多项新增能力:新的标题区块(Headings Block)、图标区块(Icons Block)和面包屑区块(Breadcrumbs Block);相册区块(Gallery Block)新增灯箱(lightbox)支持;导航链接区块(Navigation Link Block)新增动态 URL 支持;段落支持文本缩进(text indent)和分栏布局;尺寸支持(dimensions support)加入预设值和宽高比控制。

区块级自定义 CSS

在 7.0 中,你可以为页面上的单个区块直接编写自定义 CSS,实现逐块级别的精细样式控制。

标题区块(Headings Block)

新的 Headings Block 包含所有标题级别(H1-H6)的变体(variation),支持在侧边栏检查器中快速切换级别、快速转换,并在搜索和斜杠插入器(slash inserter)中显示。

面包屑区块(Breadcrumbs Block)

新的 Breadcrumbs Block 自动反映站点的导航层级,可在主题头部等站点局部(site parts)中全局应用。新增的过滤器允许开发者添加、移除、修改面包屑路径,并指定路径中出现的分类法(taxonomy)和术语(terms)。

Breadcrumb block filters

导航区块(Navigation Block)

导航区块的编辑体验得到改善:插入操作更流畅,样板编辑和 ContentOnly 模式支持交互 API,捆绑页面项(bound page items)的呈现方式也获得了优化。

Cover 区块支持视频嵌入

Cover 区块(封面区块)现在支持将视频嵌入为区块背景。

相册区块新增灯箱功能,附带幻灯片放映选项。插入相册后,点击链接图标,选择”点击放大”即可启用。

段落区块新增 <p> 区块支持

段落(Paragraph)区块中的文本现在可以排成多栏布局,并引入了可选择加入的 textIndent 排版支持(typography support)。

New Block Support: Text Indent (textIndent)

关于新增和改进区块的完整清单,参见:

Roster of design tools per block (WordPress 7.0 edition)

尺寸支持增强

7.0 在尺寸支持方面有若干增强。高度和宽度区块支持、段落文本缩进支持、预设值(presets)支持均已就位;core/button 区块新增伪元素支持,覆盖 ':hover'':focus'':focus-visible'':active' 四种状态,可在 theme.json 层面配置。theme.json 中新增了宽度、高度和最小高度的预设尺寸值,区块变体也可以控制相同的伪元素。定义一组尺寸预设后,不必再跨多个区块手动设值。

Dimensions Support Enhancements in WordPress 7.0

五、开发者工具箱

7.0 为开发者提供了一套丰富的工具集:PHP 端纯代码注册区块、增强的 Interactivity API、新的插件列表过滤器,以及为可扩展站点编辑器打下的基础架构。

PHP 端纯代码区块注册(PHP-Only Block Registration)

7.0 允许开发者直接在服务端用 PHP 创建区块和样板,通过 Block API 注册。当区块声明中包含 'supports' => array( 'autoRegister' => true ) 以及渲染回调函数(render callback)时,区块会被自动注册,并通过 JavaScript 全局变量暴露给客户端。PHP 注册的区块属性可在编辑器中编辑,检查器控件从属性中自动生成。对于 PHP 自动注册的区块,系统会自动添加 DataForm 检查器控件。这种纯 PHP 表示形式也支持样板创建和语法绑定。

PHP-only block registration

Interactivity API(交互 API)

@wordpress/interactivity 包新增 watch() 函数,该函数订阅回调函数中访问的任何信号(signal),并在这些信号发生变化时重新执行回调。对应的 data-wp-watch 指令可绑定到 DOM 元素的生命周期中,响应状态变化。另外,state.url 值现在于指令处理期间由服务端填充,并在首次客户端导航发生之前保持不变。

Changes to the Interactivity API in WordPress 7.0

DataViews 与 DataForms

新增 Activity 布局和 Details 布局,模态框外观改进,Field API 支持注册第三方类型。

DataViews, DataForm, et al. in WordPress 7.0

区块绑定 API 迭代

区块绑定与样板覆盖功能进一步增强,支持按格式(format)筛选可用属性源,并与 Field API 对齐。

新插件列表过滤器

get_views() 中新增了 plugins_list_status_text 过滤器,允许自定义筛选标签。通过 plugins_list 添加的自定义状态现在会以标签页(tabs)形式显示,用于筛选相关插件。标签页的文本可使用 plugins_list_status_text 钩子(hook)自定义。

站点编辑器构建与路由

7.0 为可扩展的站点编辑器奠定了基础:路由验证、新的 @wordpress/boot 包(允许插件构建自定义站点编辑器页面),以及重构后的 @wordpress/scripts(支持从目录构建,减少对 Webpack 的依赖)。

六、额外开发者福利

以下变更覆盖 Core 的多个方面,体现了 WordPress 为开发者打造灵活基础架构的持续投入。

区块钩子(Block Hooks)支持类内容自定义文章类型

区块钩子逻辑已从各文章类型独立过滤器迁移到 REST 控制器中统一处理。

更安全的用户注册机制

后台 设置 > 常规 的新用户默认角色选择器中,管理员(Administrator)和编辑(Editor)角色已被移除。站点健康(Site Health)功能会在更新前检查是否曾选择了这些高危角色并发出告警。新增的 default_role_dropdown_excluded_roles 过滤器允许开发者自定义排除的角色列表。

CodeMirror 升级到 v5

CodeMirror 编辑器已升级到最新的 v5 版本。CSSLintHTMLHintJSONLint 同步升级,Esprima 替换为 Espree 以支持 ES6 语法和 JavaScript 代码检查。

外部库更新

PHP 版本变更

七、无障碍改进

7.0 包含多项无障碍(Accessibility)改进。登录密码重置流程现在会预填充用户名,以符合 WCAG 2.2 标准。新增的 wp_get_image_alttext() 函数可以从图片的 IPTC 元数据中导入替代文本(Alt text)。.screen-reader-text 类新增了 word-break 属性,确保屏幕阅读器不会将隐藏文本逐字母朗读。如前所述,视图过渡仅在未设置”减少动态效果”时激活

两个函数现在通过新的 $use_title_attr 参数可以移除 title 属性,三个作者链接函数默认不再输出 title 属性。

八、更多亮点

除上述主要特性外,7.0 还包含 超过 300 个 Core bug 修复486 个 Gutenberg bug 修复77 个增强和功能请求 以及 35 个已批准任务,均已标记为在 WordPress 7.0 中修复。以下摘录部分值得关注的变更:

  • 站点健康:OPCache 信息已添加到 站点健康 > 信息 > 服务器 中(Trac #63697
  • 编辑器:样板保存时添加名称/描述元数据(Trac #64123
  • 脚本加载器:允许脚本依赖模块(Trac #61500
  • 脚本加载器:HTML5 脚本主题支持已弃用并移除(Trac #64442
  • 常规:允许在 WP_DEBUG 非真值时挂钩 wp_trigger_error()Trac #60886
  • 多站点:将账户标记为垃圾信息时不再自动将对应网站标记为垃圾信息(Trac #61146
  • 主题:PHP 8.1 弃用通知处理(Trac #64864
  • 编辑器:所有组件的底部边距已移除,无边距样式成为默认(GB #39358

文章目录



发表评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注