WordPress 的 Widgets Page Module。
此软件包仅用于 WordPress 核心。您可以自由地在自己的项目中使用它,但请记住,它可能永远不会获得完整的文档。
批量处理
此软件包包含了最终可能成为 @wordpress/batch-processing 软件包的第一版。导入后,会注册 core/__experimental-batch-processing 存储库。顾名思义——它目前处于高度实验性阶段,被视为私有 API。
安装
安装模块
npm install @wordpress/edit-widgets
此软件包假设您的代码将在 ES2015+ 环境中运行。如果您使用的环境对这些语言特性和 API 的支持有限或完全不支持,您应该在代码中包含 @wordpress/babel-preset-default 随附的多填充(polyfill)。
工作原理
WordPress 管理界面中的新小工具屏幕是另一种区块编辑器,就像文章编辑器或实验性的站点编辑器一样。因此,它通常被称为小工具编辑器。
该编辑器管理小工具区域,并提供向其中添加 Gutenberg 区块的方法,除了常规的小工具之外。为了同时支持小工具和区块,编辑器采用了一种在小工具存储和区块语法之间进行转换的机制。
存在一个充当小工具数据区块 UI 的小工具区块。默认情况下,此区块会通过可用小工具的列表进行实例化以供选择。该区块根据选定的小工具将其功能封装为两种模式:编辑模式和预览模式。小工具区块的编辑模式显示标准的小工具表单,而预览模式则对小工具进行服务器端渲染。
存在一个充当添加到小工具区域的区块存储机制的区块小工具。这是 HTML 小工具的一种特殊情况,其中区块数据按其由区块的 save 函数渲染的方式原样存储。所有添加到小工具区域的区块都作为这些特殊的 HTML 小工具存储,即一种类型的小工具——区块小工具。
这种使用小工具区块来编辑区块形式的小工具、以及使用区块小工具将区块存储为小工具的机制,确保了与旧版小工具屏幕的 100% 兼容性。因此,如果基于区块的新小工具编辑器破坏了某些依赖于管理页面 HTML 结构或 jQuery 事件的小工具功能,可以轻松回退到旧屏幕并继续编辑遗留小工具。
作为一个单纯的区块编辑器,小工具编辑器需要 REST API 实体管理端点。为此,添加了两个新的端点:./widgets 和 /sidebars。./widgets 端点用于加载和保存小工具,并获取小工具编辑表单的服务器端渲染结果。/sidebars 端点用于列出小工具区域,并将小工具分配给或从小工具区域中移除。还有一个 /widget-types 端点列出可用的各类小工具,例如文本小工具、日历小工具等。
为了让用户体验尽可能无缝,小工具编辑器中会发生以下“魔法”操作:
- 对于每个可用的小工具,都会注册一个小工具区块的变体,以便用户可以根据所需的确切名称进行搜索和查看
- 所有具有等效区块(履行相同功能的区块)的小工具,可以通过过滤器使其不作为小工具区块变体可用
- 所有具有等效区块的核心小工具均不作为小工具区块变体可用
为此软件包做出贡献
这是一个独立的软件包,属于 Gutenberg 项目的一部分。该项目组织为单体仓库(monorepo)。它由多个自包含的软件包组成,每个软件包都有特定的用途。此单体仓库中的软件包发布到 npm,并被 WordPress 以及其他软件项目使用。
要了解有关为此软件包或整个 Gutenberg 做出贡献的更多信息,请阅读项目的主要 贡献者指南。