Interactivity API 是 在 WordPress 6.5 中引入的一项技术,它为开发者提供了一种标准化的方式,以便在前端为区块添加交互功能。该 API 也被许多 Core WordPress 区块所使用,包括搜索、查询、导航和文件区块。

这一标准化使得开发者能够更轻松地为前端创建丰富的交互式用户体验,从简单的计数器或弹窗到更复杂的功能,如即时页面导航、即时搜索、购物车或结账流程。

区块之间可以共享数据、动作和回调函数。这使得区块间的通信变得更加简单且不易出错。例如,点击“添加到购物车”区块可以无缝更新另一个“购物车”区块的内容。

如需了解更多关于 Interactivity API 的起源信息,请参阅原始提案。您还可以查阅合并公告、状态更新文章以及官方的 Trac 工单。

Interactivity API 由包 @wordpress/interactivity 提供支持,该包自 v6.5 起已捆绑在 WordPress Core 中。

浏览 Interactivity API 文档

使用以下链接查找您感兴趣的主题。如果您之前从未使用过 Interactivity API,建议按照列出的顺序阅读以下资源。

若想更深入地了解 Interactivity API 是什么,或寻找关于此标准的疑问解答,请查看以下资源:

Interactivity API 的要求

Interactivity API 已包含在 WordPress 6.5 的 Core 中。对于较低版本,您需要在 WordPress 安装中安装并激活 Gutenberg 17.5 或更高版本。

还需要强调的是,区块创建工作流不会改变,所有 先决条件 保持不变。这些包括:

设置好区块开发环境并运行 WordPress 6.5+(或 Gutenberg 17.5+)后,您就可以开始创建交互功能了。

代码要求

将交互功能添加到您的项目中

使用以下命令将 Interactivity API 安装到您的项目中:

npm install @wordpress/interactivity --save

将 store 导入到您的 view.js 中。更多信息请参阅 store 文档。

import { store } from '@wordpress/interactivity';

在 block.json 中添加对 Interactivity API 的支持

若要指示该区块 支持 Interactivity API 的功能,请在区块的 block.json 文件的 supports 属性中添加 "interactivity": true。

在 block.json 中:

"supports": {
    "interactivity": true
},

请参阅 interactivity 支持属性文档以获取关于此属性的更详细描述。

使用 viewScriptModule 加载 Interactivity API JavaScript 代码

Interactivity API 提供了 @wordpress/interactivity Script Module。使用 Interactivity API 的 JavaScript 应实现为 Script Modules,以便它们可以依赖 @wordpress/interactivity。Script Modules 自 WordPress 6.5 起可用。区块可以使用 viewScriptModule 区块元数据轻松注册它们的 Script Modules:

在 block.json 中:

{
    "viewScriptModule": "file:./view.js"
}

使用 viewScriptModule 还需要为 wp-scripts 的 build 和 start 脚本启用 --experimental-modules 标志,以确保正确构建 Script Modules。

注意: 如果您使用 @wordpress/create-block-interactive-template 脚手架创建了您的区块,则该标志已包含在您项目的 package.json 脚本中,无需手动配置。

如果需要手动添加,请更新您的 package.json:

{
    "scripts": {
        "build": "wp-scripts build --experimental-modules",
        "start": "wp-scripts start --experimental-modules"
    }
}

向 DOM 元素添加 wp-interactive 指令

要在 DOM 元素(及其子元素)中“激活” Interactivity API,请在区块的 render.php 或 save.js 文件中的 DOM 元素上添加 wp-interactive 指令。

<div data-wp-interactive="myPlugin">
    <!-- Interactivity API zone -->
</div>

请参阅 wp-interactive 文档以获取关于此指令的更详细描述。

文档与示例

以下是一些有关学习和阅读更多关于 Interactivity API 的资源:

已开启一个追踪问题(Tracking Issue)以简化与 Interactivity API 文档相关工作的协调:Interactivity API 文档 – 追踪问题 #53296