区块编辑器的数据 命名空间: core/block-editor。 选择器 areInnerBlocksControlled 检查给定区块是否具有受控内部区块。 参数 state Object: 全局应用状态。 clientId string: 要检查的区块。 返回值 boolean: 如果区块具有受控内部区块,则为 true。 canEditBlock 判断给定区块是否允许被编辑。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 boolean: 给定区块是否允许被编辑。 canInsertBlocks 判断给定的区块是否允许插入到区块列表中。 参数 state Object: 编辑器状态。 clientIds string[]: 待插入区块的客户端 ID 数组。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 boolean: 给定的区块是否允许被插入。 canInsertBlockType 判断给定的区块类型是否允许插入到区块列表中。 参数 state Object: 编辑器状态。 blockName string: 区块类型的名称,例如 'core/paragraph'。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 boolean: 给定的区块类型是否允许被插入。 canLockBlockType 判断给定区块类型是否可由用户锁定/解锁。 参数 state Object: 编辑器状态。 nameOrType (string|Object): 区块名称或类型对象。 返回值 boolean: 给定区块类型是否可被锁定/解锁。 canMoveBlock 判断给定区块是否允许被移动。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 boolean: 给定区块是否允许被移动。 canMoveBlocks 判断给定的区块是否允许被移动。 参数 state Object: 编辑器状态。 clientIds string: 待移动区块的客户端 ID。 返回值 boolean: 给定的区块是否允许被移动。 canRemoveBlock 判断给定区块是否允许被删除。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 boolean: 给定区块是否允许被移除。 canRemoveBlocks 判断给定的区块是否允许被移除。 参数 state Object: 编辑器状态。 clientIds string: 待移除区块的客户端 ID。 返回值 boolean: 给定的区块是否允许被移除。 didAutomaticChange 如果最后一次更改是自动更改,则返回 true,否则返回 false。 参数 state Object: 全局应用程序状态。 返回值 boolean: 最后一次更改是否为自动更改。 getAdjacentBlockClientId 返回在给定的起始客户端ID(startClientId)和方向性修饰符(modifier)方向上相邻的块的客户端ID。默认起始客户端ID为当前选中的块,方向为下一个块。如果没有相邻块,则返回null。 参数 state Object: 编辑器状态。 startClientId ?string: 可选的起始搜索块的客户端ID。 modifier ?number: 方向性乘数(1表示下一个,-1表示上一个)。 返回值 ?string: 返回块的客户端ID,如果不存在则返回null。 getAllowedBlocks 返回内部区块子元素允许使用的插入器区块列表。 参数 state Object: 编辑器状态。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 Array?: 允许的区块类型列表。 getBlock 根据客户端 ID 返回一个区块。这是区块的解析副本,包含其 blockName、 clientId 和当前 attributes 状态。这不是区块的注册设置,后者必须从区块模块注册存储中获取。 getBlock 会递归遍历其内部区块,直到检索完所有子区块。请注意,getBlock 不会返回内部区块控制器的子内部区块。这是因为内部区块控制器会与自身实体同步,因此不应包含在不同实体的区块中。例如,假设您调用 getBlocks( TP ) 来获取模板部件的区块。如果另一个模板部件是 TP 的子级,则嵌套模板部件的子区块将不会被返回。这样,模板区块本身被视为父级的一部分,但其子级则不是。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 Object: 解析后的区块对象。 getBlockAttributes 根据客户端 ID 返回区块的属性,如果不存在对应客户端 ID 的区块则返回 null。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 ?Object: 区块属性。 getBlockCount 返回当前文章中存在的区块数量。 参数 state Object: 编辑器状态。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 number: 文章中的区块数量。 getBlockEditingMode 返回指定区块的编辑模式。 该模式可以是以下三种选项之一: 'disabled':完全阻止编辑该区块,即无法被选中。 'contentOnly':隐藏所有非内容 UI,例如工具栏中的辅助控件、区块移动器和区块设置。 'default':允许正常编辑区块。 区块可以使用 useBlockEditingMode 钩子来设置模式。 该模式会被区块的所有内部区块继承,除非它们有自己的模式。 模板锁定也可以设置模式。如果模板锁定为 'contentOnly',并且区块具有内容角色属性,则区块的模式将被覆盖为 'contentOnly';否则将被覆盖为 'disabled'。 相关 useBlockEditingMode 参数 state Object:全局应用程序状态。 clientId string:区块客户端 ID,根容器则为 ''。 返回值 BlockEditingMode:区块编辑模式。为 'disabled'、 'contentOnly' 或 'default' 之一。 getBlockHierarchyRootClientId 给定一个区块客户端 ID,返回该区块嵌套所在的层级结构根节点。对于根层级的区块,则返回其自身。 参数 state Object: 编辑器状态。 clientId string: 用于查找根客户端 ID 的区块。 返回值 string: 根客户端 ID getBlockIndex 返回指定客户端 ID 对应的区块在区块顺序中的索引位置,如果区块不存在则返回 -1。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 number: 区块在顺序中的索引位置。 getBlockInsertionPoint 返回插入提示的位置。默认为最后一个索引。 参数 state Object: 编辑器状态。 返回值 Object: 包含 rootClientId 和 index 的插入点对象。 getBlockListSettings 返回区块的块列表设置(如果存在)。 参数 state Object: 编辑器状态。 clientId ?string: 区块客户端 ID。 返回值 ?Object: 如果已设置,则返回该区块的块设置。 getBlockMode 返回区块的编辑模式,若未明确指定则默认为"visual"。 参数 state Object: 编辑器状态。 clientId string: 区块客户端ID。 返回值 Object: 区块编辑模式。 getBlockName 根据客户端 ID 返回区块名称,如果该客户端 ID 对应的区块不存在则返回 null。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 string: 区块名称。 getBlockNamesByClientId 给定一个区块客户端 ID 数组,返回对应的区块名称数组。 参数 state Object: 编辑器状态。 clientIds string[]: 需要返回区块名称的客户端 ID 数组。 返回值 string[]: 区块名称数组。 getBlockOrder 返回一个数组,包含编辑器中所有区块客户端 ID,按它们在编辑器中出现的顺序排列。可选择性地传入区块列表的根客户端 ID,以返回该列表的顺序,默认为顶级区块顺序。 参数 state Object: 编辑器状态。 rootClientId ?string: 可选的区块列表根客户端 ID。 返回值 Array: 编辑器区块的有序客户端 ID 数组。 getBlockParents 给定一个区块的客户端 ID,返回其所有父级区块的列表,顺序为从上到下。 参数 state Object: 编辑器状态。 clientId string: 用于查找根客户端 ID 的区块。 ascending boolean: 结果排序方式:从下到上 (true) 或从上到下 (false)。 返回值 Array: 父级区块的客户端 ID 数组。 getBlockParentsByBlockName 给定一个区块客户端 ID 和区块名称,返回其所有父级区块的列表(从上到下),并按给定名称进行筛选。例如,如果传入 'core/group' 作为 blockName,则仅返回属于分组区块的父级。如果传入 [ 'core/group', 'core/cover'] 作为 blockName,则返回属于分组区块和封面区块的父级。 参数 state Object: 编辑器状态。 clientId string: 用于查找根客户端 ID 的区块。 blockName string|string[]: 用于筛选的区块名称。 ascending boolean: 结果排序方式:从下到上 (true) 或从上到下 (false)。 返回值 Array: 父级区块的客户端 ID 数组。 getBlockRootClientId 给定一个区块客户端 ID,返回该区块嵌套的根区块,顶级区块返回空字符串,若区块不存在则返回 null。 参数 state Object: 编辑器状态。 clientId string: 需要查找根客户端 ID 的区块。 返回值 ?string: 根客户端 ID(如果存在) getBlocks 返回当前正在编辑的文章的所有区块对象,以它们在文章中出现的顺序作为数组。注意:这将排除嵌套内部区块控制器的子区块。 参数 state Object: 编辑器状态。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 Object[]: 文章区块。 getBlocksByClientId 根据给定的区块客户端 ID 数组,返回对应的区块对象数组。 参数 state Object: 编辑器状态。 clientIds string[]: 需要获取对应区块的客户端 ID 数组。 返回值 WPBlock[]: 区块对象数组。 getBlocksByName 返回所有匹配指定 blockName 的区块。结果包含嵌套区块。 参数 state Object: 全局应用状态。 blockName string[]: 需要返回 clientIds 的区块名称(可多个)。 返回值 Array: 名称等于 blockName 的区块的 clientIds 数组。 getBlockSelectionEnd 返回当前块选择结束位置。该值可能为空,可能表示单个块选择或多选结束位置。当选择的起始与结束位置匹配时,即为单个选择。 参数 state Object: 全局应用状态。 返回值 ?string: 块选择结束位置的客户端 ID。 getBlockSelectionStart 返回当前块选择的起始位置。该值可能为空,可能表示单个块选择或多选起始位置。当选择的起始与结束位置匹配时,即为单个选择。 参数 state Object: 全局应用状态。 返回值 ?string: 块选择起始位置的客户端 ID。 getBlockTransformItems 确定出现在可用块转换列表中的项目。 每个项目对象包含在转换列表中显示菜单项并处理其选择所需的内容。 'frecency' 属性是一种结合了块使用频率和最近使用时间的启发式算法(https://en.wikipedia.org/wiki/Frecency)。 返回的项目按其 'frecency' 值降序排列。 参数 state Object: 编辑器状态。 blocks Object|Object[]: 块对象或对象数组。 rootClientId ?string: 块列表的可选根客户端 ID。 返回值 WPEditorTransformItem[]: 出现在插入器中的项目。 类型定义 WPEditorTransformItem Object 属性 id string: 项目的唯一标识符。 name string: 要创建的块的类型。 title string: 项目的标题,即其在插入器中显示的名称。 icon string: 项目的 Dashicon 图标,即其在插入器中显示的图标。 isDisabled boolean: 是否应阻止用户插入此项目。 frecency number: 结合频率和最近使用时间的启发式值。 getClientIdsOfDescendants 返回一个数组,包含给定块的所有后代块的 clientId。返回的 id 首先按给定 id 的顺序排序,然后按它们在编辑器中出现的顺序排序。 参数 state Object: 全局应用状态。 rootIds string|string[]: 要返回后代块的客户端 ID(一个或多个)。 返回值 Array: 后代的客户端 ID。 getClientIdsWithDescendants 返回一个数组,包含顶级区块及其任意深度(针对嵌套区块)的所有后代区块的 clientId。返回的 ID 顺序与它们在编辑器中出现的顺序一致。 参数 state Object: 全局应用状态。 返回值 Array: 顶级区块及其后代区块的 ID 列表。 getDirectInsertBlock 返回由区块添加器直接插入的区块。 参数 state Object: 编辑器状态。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 WPDirectInsertBlock|undefined: 要直接插入的区块类型。 类型定义 WPDirectInsertBlock Object 属性 name string: 区块的类型。 attributes ?Object: 传递给新创建区块的属性。 attributesToCopy ?Array: 插入时要从相邻区块复制的属性。 getDraggedBlockClientIds 返回任何被直接拖拽的区块的客户端 ID。 这不包括被拖拽父区块的子区块。 参数 state Object: 全局应用状态。 返回值 string[]: 被拖拽区块客户端 ID 的数组。 getFirstMultiSelectedBlockClientId 返回多选集合中第一个区块的客户端 ID,若无多选则返回 null。 参数 state Object: 编辑器状态。 返回值 ?string: 多选集合中首个区块的客户端 ID。 getGlobalBlockCount 返回文章中的总块数,或具有特定名称的块的总数。返回的数量包括嵌套块。 参数 state Object: 全局应用状态。 blockName ?string: 可选的块名称,如果指定,则仅统计该类型的块。 返回值 number: 文章中的块数,或名称等于 blockName 的块的数量。 getHoveredBlockClientId 已弃用 返回当前悬停的区块。 getInserterItems 确定插入器中显示的项目。包括静态项目(例如常规区块类型)和动态项目(例如可重用区块)。 每个项目对象包含在插入器中显示按钮并处理其选择所需的内容。 'frecency' 属性是一种结合区块使用频率和新近度的启发式算法(https://en.wikipedia.org/wiki/Frecency)。 项目按其 'utility' 和 'frecency' 降序返回。 参数 state Object: 编辑器状态。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 WPEditorInserterItem[]: 插入器中显示的项目。 类型定义 WPEditorInserterItem Object 属性 id string: 项目的唯一标识符。 name string: 要创建的区块类型。 initialAttributes Object: 传递给新创建区块的属性。 title string: 项目的标题,显示在插入器中。 icon string: 项目的 Dashicon,显示在插入器中。 category string: 项目关联的区块类别。 keywords string[]: 可搜索到此项目的关键词。 isDisabled boolean: 是否应阻止用户插入此项目。 frecency number: 结合频率和新近度的启发式值。 getLastMultiSelectedBlockClientId 返回多选集合中最后一个区块的客户端 ID,若无多选则返回 null。 参数 state Object: 编辑器状态。 返回值 ?string: 多选集合中最后一个区块的客户端 ID。 getLowestCommonAncestorWithSelectedBlock 给定一个区块客户端 ID,返回与所选客户端 ID 的最低公共祖先。 参数 state Object: 编辑器状态。 clientId string: 用于查找公共祖先客户端 ID 的区块。 返回值 string: 公共祖先客户端 ID 或 undefined getMultiSelectedBlockClientIds 返回当前多选区块的客户端 ID 集合,若无多选则返回空数组。 参数 state Object: 编辑器状态。 返回值 Array: 多选区块的客户端 ID 数组。 getMultiSelectedBlocks 返回当前的多选块集合,若无多选则返回空数组。 参数 state Object: 编辑器状态。 返回值 Array: 多选块对象数组。 getMultiSelectedBlocksEndClientId 返回多选集中结束块的客户端 ID,如果不存在多选则返回 null。 这不一定是选择中的最后一个客户端 ID。 相关 getLastMultiSelectedBlockClientId 参数 state Object: 编辑器状态。 返回值 ?string: 结束多选的块的客户端 ID。 getMultiSelectedBlocksStartClientId 返回多选集合起始区块的客户端 ID,若无多选则返回 null。 注意:这不一定是选中区块中的首个客户端 ID。 相关函数 getFirstMultiSelectedBlockClientId 参数 state Object: 编辑器状态。 返回值 ?string: 多选起始区块的客户端 ID。 getNextBlockClientId 返回给定起始参考 ID 的下一个区块客户端 ID。默认从当前选中区块开始搜索。若无下一个区块则返回 null。 参数 state Object: 编辑器状态对象。 startClientId ?string: 可选参数,指定开始搜索的区块客户端 ID。 返回值 ?string: 相邻区块的客户端 ID,若不存在则返回 null。 getPatternsByBlockTypes 根据模式声明的 blockTypes 和区块名称返回模式列表。模式可以使用 blockTypes 集成到工作流中,例如在占位符状态(插入期间)或区块转换中建议合适的模式。 参数 state Object: 编辑器状态。 blockNames string|string[]: 要查找匹配模式的区块名称或区块名称数组。 rootClientId ?string: 可选的目标根客户端 ID。 返回 Array: 基于声明的 blockTypes 和区块名称匹配的区块模式列表。 getPreviousBlockClientId 返回给定起始参考 ID 的前一个区块的客户端 ID。默认起始点为当前选中的区块。若无前一个区块则返回 null。 参数 state Object: 编辑器状态。 startClientId ?string: 可选的起始搜索区块的客户端 ID。 返回值 ?string: 相邻区块的客户端 ID,若不存在则返回 null。 getSelectedBlock Returns the currently selected block, or null if there is no selected block. Usage import { select } from '@wordpress/data'; import { store as blockEditorStore } from '@wordpress/block-editor'; // Set initial active block client ID let activeBlockClientId = null; const getActiveBlockData = () => { const activeBlock = select( blockEditorStore ).getSelectedBlock(); if ( activeBlock && activeBlock.clientId !== activeBlockClientId ) { activeBlockClientId = activeBlock.clientId; // Get active block name and attributes const activeBlockName = activeBlock.name; const activeBlockAttributes = activeBlock.attributes; // Log active block name and attributes console.log( activeBlockName, activeBlockAttributes ); } }; // Subscribe to changes in the editor // wp.data.subscribe(() => { // getActiveBlockData() // }) // Update active block data on click // onclick="getActiveBlockData()" Parameters state Object: Global application state. Returns ?Object: Selected block. getSelectedBlockClientId 返回当前选中的区块客户端 ID,若无选中区块则返回 null。 参数 state Object: 编辑器状态。 返回值 ?string: 选中的区块客户端 ID。 getSelectedBlockClientIds 返回当前选中的区块客户端 ID 集合(多选或单选)。 参数 state Object: 编辑器状态。 返回值 Array: 多选区块的客户端 ID 数组。 getSelectedBlockCount 返回当前文章中选中的区块数量。 参数 state Object: 全局应用状态。 返回值 number: 文章中选中的区块数量。 getSelectedBlocksInitialCaretPosition 返回所选块的初始光标位置。此位置用于在所选块更改时正确定位光标。如果当前块不是 RichText,将初始位置设置为 0 表示“聚焦块”。 参数 state Object: 全局应用状态。 返回值 0|-1|null: 初始位置。 getSelectionEnd 返回当前选区结束块的客户端 ID、属性键和文本偏移量。 参数 state Object: 区块编辑器状态。 返回值 WPBlockSelection: 选区结束信息。 getSelectionStart 返回当前选区起始块的客户端 ID、属性键和文本偏移量。 参数 state Object: 区块编辑器状态。 返回值 WPBlockSelection: 选区起始信息。 getSettings 返回编辑器设置。 参数 state Object: 编辑器状态。 返回 Object: 编辑器设置对象。 getTemplate 返回已定义的区块模板。 参数 state boolean: 返回 ?Array: 区块模板。 getTemplateLock 返回已定义的区块模板锁定。可选择性地接受一个根区块客户端 ID 作为上下文,否则默认为全局上下文。 参数 state Object: 编辑器状态。 rootClientId ?string: 可选的区块根客户端 ID。 返回值 string|false: 区块模板锁定 hasBlockMovingClientId 已弃用 返回是否启用了块移动模式。 hasDraggedInnerBlock 如果块的某个内部块被拖动,则返回 true。 参数 state Object: 编辑器状态。 clientId string: 块客户端 ID。 deep boolean: 执行深度检查。 返回值 boolean: 该块是否有内部块被拖动 hasInserterItems 判断插入器中是否有可显示的项。 参数 state Object: 编辑器状态。 rootClientId ?string: 区块列表的可选根客户端 ID。 返回值 boolean: 出现在插入器中的项。 hasMultiSelection 如果已进行多选,则返回 true,否则返回 false。 参数 state Object: 编辑器状态。 返回值 boolean: 是否已进行多选。 hasSelectedBlock 如果存在单个选中的区块则返回 true,否则返回 false。 参数 state Object: 编辑器状态。 返回值 boolean: 是否选中了单个区块。 hasSelectedInnerBlock 如果块的某个内部块被选中,则返回 true。 参数 state Object: 编辑器状态。 clientId string: 块客户端 ID。 deep boolean: 执行深度检查。 返回值 boolean: 该块是否有内部块被选中 isAncestorBeingDragged 返回指定块的父级/祖先是否正在被拖拽。 参数 state Object: 全局应用状态。 clientId string: 要检查的块的客户端 ID。 返回值 boolean: 该块的祖先是否正在被拖拽。 isAncestorMultiSelected 如果块的祖先被多选,则返回 true,否则返回 false。 参数 state Object: 编辑器状态。 clientId string: 块客户端 ID。 返回值 boolean: 块的祖先是否在多选集合中。 isBlockBeingDragged 返回该区块是否正在被拖动。 仅当区块被直接拖动时才返回 true,如果区块是被拖动的父区块的子区块,则不返回 true。对于子区块,请参见 isAncestorBeingDragged。 参数 state Object: 全局应用状态。 clientId string: 要检查的区块的客户端 ID。 返回值 boolean: 该区块是否正在被拖动。 isBlockHighlighted 如果当前高亮的区块与指定的区块 clientId 匹配,则返回 true。 参数 state Object: 全局应用状态。 clientId string: 要检查的区块。 返回值 boolean: 该区块当前是否处于高亮状态。 isBlockInsertionPointVisible 如果块插入点可见,则返回 true。 参数 state Object: 全局应用程序状态。 返回 ?boolean: 插入点是否可见。 isBlockMultiSelected 如果客户端 ID 出现在块多选范围内则返回 true,否则返回 false。 参数 state Object: 编辑器状态。 clientId string: 块客户端 ID。 返回值 boolean: 块是否在多选集合中。 isBlockSelected 如果指定客户端 ID 对应的区块当前被选中且不存在多选,则返回 true,否则返回 false。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 boolean: 区块是否被选中且存在多选。 isBlockValid 返回一个区块是否有效。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 boolean: 是否有效。 isBlockVisible 判断区块在画布上是否可见。 参数 state Object: 全局应用状态。 clientId Object: 区块的客户端 ID。 返回值 boolean: 如果区块可见则为 true。 isBlockWithinSelection 如果指定客户端 ID 对应的区块当前被选中但不是选中区块中的最后一个,则返回 true。此处的"最后一个"指的是文档中的区块顺序,_而非_多重选择的顺序,这就是为什么未使用 state.selectionEnd 的原因。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 boolean: 区块是否被选中且不是选中区块中的最后一个。 isCaretWithinFormattedText 已弃用 如果光标位于格式化文本内则返回 true,否则返回 false。 返回值 boolean: 光标是否位于格式化文本内。 isDraggingBlocks 如果用户正在拖拽区块则返回 true,否则返回 false。 参数 state Object: 全局应用状态。 返回值 boolean: 用户是否正在拖拽区块。 isFirstMultiSelectedBlock 如果存在多重选择,并且指定客户端 ID 对应的区块是多选集合中的第一个区块,则返回 true,否则返回 false。 参数 state Object: 编辑器状态。 clientId string: 区块客户端 ID。 返回值 boolean: 区块是否为多重选择中的第一个。 isGroupable 指示提供的区块(通过客户端 ID)是否可分组。我们需要至少有一个区块,设置了分组区块名称,并且能够移除这些区块。 参数 state Object: 全局应用程序状态。 clientIds string[]: 区块客户端 ID。如果未传递,将使用选中的区块客户端 ID。 返回值 boolean: 如果区块可分组则为 true。 isLastBlockChangePersistent 如果最近的区块更改被认为是持久性的,则返回 true,否则返回 false。持久性更改是指除了 onInput 之外,由 BlockEditorProvider 通过其 onChange 回调提交的更改。 参数 state Object: 区块编辑器状态。 返回值 boolean: 最近的区块更改是否为持久性更改。 isMultiSelecting 是否处于多选过程中。此标志仅在通过鼠标移动进行多选时保持为真,一旦多选操作完成即变为假。 相关项 hasMultiSelection 参数 state Object: 全局应用状态。 返回值 boolean: 若正在多选则为真,否则为假。 isSelectionEnabled 选择器,用于返回是否启用了多选功能。 参数 state Object: 全局应用程序状态。 返回值 boolean: 如果可以多选区块则为 true,如果多选功能被禁用则为 false。 isTyping 如果用户正在输入则返回 true,否则返回 false。 参数 state Object: 全局应用状态。 返回值 boolean: 用户是否正在输入。 isUngroupable 指示一个区块是否可解组。如果一个区块是包含内部区块的单一分组区块,则该区块可解组。如果一个区块具有 ungroup 转换,则它也可解组,无需满足是默认分组区块的要求。此外,一个区块只有在具有内部区块且可被移除时才能被解组。分区区块不可解组。 参数 state Object: 全局应用状态。 clientId string: 区块的客户端 ID。如果未传递,将使用所选区块的客户端 ID。 返回值 boolean: 如果区块可解组则为 true。 isValidTemplate 返回区块是否与模板匹配。 参数 state boolean: 返回值 ?boolean: 模板是否有效。 wasBlockJustInserted 判断具有指定 clientId 的区块是否刚刚被插入。 参数 state Object: 全局应用状态。 clientId Object: 区块的客户端 ID。 source ?string: 区块的可选插入来源。 返回值 boolean: 如果该区块与从指定来源最后插入的区块匹配,则返回 true。 操作 clearSelectedBlock 用于清除区块选择的操作。 返回值 Object: 操作对象。 duplicateBlocks 用于复制一组块的操作。 参数 clientIds string[]: updateSelection boolean: enterFormattedText 已弃用 返回一个操作对象,用于表示光标已进入格式化文本区域。 返回值 Object: 操作对象。 exitFormattedText 已弃用 返回一个动作对象,用于表示用户光标已退出格式化文本。 返回值 Object: 动作对象。 flashBlock 通过有节奏地高亮显示,对具有给定 clientId 的区块进行“闪烁”的动作。 参数 clientId string: 目标区块的客户端 ID。 timeout number: 保持高亮的持续时间(毫秒)。默认为 150 毫秒。 hideInsertionPoint 用于隐藏插入点的操作。 hoverBlock 已弃用 返回一个操作对象,用于表示指定客户端 ID 的区块已被悬停。 insertAfterBlock 在指定区块后插入默认区块的操作。 参数 clientId string: insertBeforeBlock 在指定区块前插入默认区块的操作。 参数 clientId string: insertBlock 用于插入单个块的操作,可选择在根块列表的特定索引处插入。 仅允许插入已授权的块。对于未授权的块或块列表上存在模板锁的情况,此操作可能会静默失败。 参数 block Object:要插入的块对象。 index ?number:块应插入的索引位置。 rootClientId ?string:可选,要插入块的块列表的根客户端 ID。 updateSelection ?boolean:如果为 true,将更新块选择状态;如果为 false,块选择状态保持不变。默认为 true。 initialPosition 0|-1|null:初始焦点位置。设置为 null 可防止聚焦到插入的块。 meta ?Object:可选,传递给操作对象的元数据值。 返回值 Object:操作对象。 insertBlocks 用于插入块数组的操作,可选择在根块列表的特定索引处插入。 仅允许的块会被插入。对于不被允许的块,或块列表上存在模板锁时,此操作可能会静默失败。 参数 blocks Object[]: 要插入的块对象数组。 index ?number: 块应插入的索引位置。 rootClientId ?string: 可选的目标块列表的根客户端 ID。 updateSelection ?boolean: 若为 true,将更新块选择状态。若为 false,块选择状态保持不变。默认为 true。 initialPosition 0|-1|null: 初始焦点位置。设为 null 可防止聚焦到插入的块。 meta ?Object: 可选的要传递给操作对象的元数据值。 返回值 Object: 操作对象。 insertDefaultBlock 向区块列表添加默认类型新块的操作。 参数 attributes ?Object: 可选的要分配给块的属性。 rootClientId ?string: 可选的要追加的区块列表的根客户端 ID。 index ?number: 可选的要插入默认块的索引位置。 mergeBlocks 用于合并两个区块的操作。 参数 firstBlockClientId string: 要合并的第一个区块的客户端 ID。 secondBlockClientId string: 要合并的第二个区块的客户端 ID。 moveBlocksDown 未记录的声明。 moveBlocksToPosition 将指定区块移动到新位置的操作。 参数 clientIds ?string: 区块的客户端 ID。 fromRootClientId ?string: 源根客户端 ID。 toRootClientId ?string: 目标根客户端 ID。 index number: 移动区块的目标索引位置。 moveBlocksUp 未记录的声明。 moveBlockToPosition 将指定块移动到新位置的操作。 参数 clientId ?string: 块的客户端 ID。 fromRootClientId ?string: 源根客户端 ID。 toRootClientId ?string: 目标根客户端 ID。 index number: 要将块移动到的索引位置。 multiSelect 用于更改块多选状态的操作。 参数 start string: 多选范围的起始块。 end string: 多选范围的结束块。 __experimentalInitialPosition number|null: 可选初始位置。传入 null 可跳过编辑器画布内的焦点设置。 receiveBlocks 已弃用 返回一个用于表示已接收块的动作对象。与 resetBlocks 不同,这些块应追加到现有已知集合中,而非替换。 参数 blocks Object[]: 块对象数组。 返回值 Object: 动作对象。 registerInserterMediaCategory Registers a new inserter media category. Once registered, the media category is available in the inserter's media tab. The following interfaces are used: Type Definition InserterMediaRequest Object: Interface for inserter media requests. Properties per_page number: How many items to fetch per page. search string: The search term to use for filtering the results. Type Definition InserterMediaItem Object: Interface for inserter media responses. Any media resource should map their response to this interface, in order to create the core WordPress media blocks (image, video, audio). Properties title string: The title of the media item. url `string: The source url of the media item. previewUrl [string]: The preview source url of the media item to display in the media list. id [number]: The WordPress id of the media item. sourceId [number|string]: The id of the media item from external source. alt [string]: The alt text of the media item. caption [string]: The caption of the media item. Usage wp.data.dispatch( 'core/block-editor' ).registerInserterMediaCategory( { name: 'openverse', labels: { name: 'Openverse', search_items: 'Search Openverse', }, mediaType: 'image', async fetch( query = {} ) { const defaultArgs = { mature: false, excluded_source: 'flickr,inaturalist,wikimedia', license: 'pdm,cc0', }; const finalQuery = { ...query, ...defaultArgs }; // Sometimes you might need to map the supported request params according to `InserterMediaRequest`. // interface. In this example the `search` query param is named `q`. const mapFromInserterMediaRequest = { per_page: 'page_size', search: 'q', }; const url = new URL( 'https://api.openverse.org/v1/images/' ); Object.entries( finalQuery ).forEach( ( [ key, value ] ) => { const queryKey = mapFromInserterMediaRequest[ key ] || key; url.searchParams.set( queryKey, value ); } ); const response = await window.fetch( url, { headers: { 'User-Agent': 'WordPress/inserter-media-fetch', }, } ); const jsonResponse = await response.json(); const results = jsonResponse.results; return results.map( ( result ) => ( { ...result, // If your response result includes an `id` prop that you want to access later, it should // be mapped to `InserterMediaItem`'s `sourceId` prop. This can be useful if you provide // a report URL getter. // Additionally you should always clear the `id` value of your response results because // it is used to identify WordPress media items. sourceId: result.id, id: undefined, caption: result.caption, previewUrl: result.thumbnail, } ) ); }, getReportUrl: ( { sourceId } ) => `https://wordpress.org/openverse/image/${ sourceId }/report/`, isExternalResource: true, } ); Parameters category InserterMediaCategory:要注册的插入器媒体类别。 类型定义 InserterMediaCategory Object:插入器媒体类别的接口。 属性 name string:媒体类别的名称,在所有媒体类别中应保持唯一。 labels Object:媒体类别的标签。 labels.name string:媒体类别的通用名称。它用于插入器媒体项目列表中。 labels.search_items [string]:搜索项目的标签。默认为‘搜索文章’/‘搜索页面’。 mediaType ('image'|'audio'|'video'):媒体类别的媒体类型。 fetch (InserterMediaRequest) => Promise:用于获取该类别媒体项目的函数。 getReportUrl [(InserterMediaItem) => string]:如果媒体类别支持报告媒体项目,此函数应返回该媒体项目的报告 URL。它接受 InserterMediaItem 作为参数。 isExternalResource [boolean]:如果媒体类别是外部资源,应将其设置为 true。这用于避免在用户 removeBlock 返回一个用于发出信号的动作对象,表示将移除具有指定客户端 ID 的区块。 参数 clientId string: 要移除的区块的客户端 ID。 selectPrevious boolean: 如果为 true,则在移除区块时选择前一个区块。 返回值 Object: 动作对象。 removeBlocks 生成用于指示应移除与指定客户端 ID 集合对应的区块的操作对象。 参数 clientIds string|string[]: 要移除的区块的客户端 ID。 selectPrevious boolean: 如果为 true,则在移除区块时选择前一个区块或直接父级(如果不存在前一个区块)。 replaceBlock 用于将单个区块替换为一个或多个替换区块的操作。 参数 clientId (string|string[]): 要替换的区块客户端 ID。 block (Object|Object[]): 替换区块(单个或多个)。 返回值 Object: 操作对象。 replaceBlocks 用于将指定区块替换为一个或多个新区块的操作。 参数 clientIds (string|string[]): 待替换区块的客户端 ID(单个或多个)。 blocks (Object|Object[]): 替换用的新区块(单个或多个)。 indexToSelect number: 要选中的新区块的索引。 initialPosition 0|-1|null: 操作完成后,光标在选中区块内的初始位置。 meta ?Object: 可选,传递给操作对象的元数据值。 返回值 Object: 操作对象。 replaceInnerBlocks 返回一个用于发出信号的动作对象,表示应替换指定客户端 ID 的内部区块。 参数 rootClientId string: 其内部区块将被替换的区块的客户端 ID。 blocks Object[]: 作为新内部区块插入的区块对象数组。 updateSelection ?boolean: 如果为 true,将更新区块选择状态。如果为 false,区块选择状态将保持不变。默认为 false。 initialPosition 0|-1|null: 初始区块位置。 返回值 Object: 动作对象。 resetBlocks 将区块状态重置为指定区块数组的操作,优先于任何其他在状态中反映为编辑的内容。 参数 blocks Array: 区块数组。 resetSelection 返回一个用于指示应将选择状态重置为指定选择的操作对象。 参数 selectionStart WPBlockSelection:选择起始位置。 selectionEnd WPBlockSelection:选择结束位置。 initialPosition 0|-1|null:初始块位置。 返回值 Object:操作对象。 selectBlock 返回一个动作对象,用于指示已选择具有指定客户端 ID 的区块,并可选择接受反映其选择方向性的位置值。初始位置为 -1 表示反向选择。 参数 clientId string: 区块客户端 ID。 initialPosition 0|-1|null: 可选的初始位置。传入 -1 表示反向选择,或传入 null 以防止聚焦该区块。 返回值 Object: 动作对象。 selectionChange 用于更改用户光标位置的操作。 参数 clientId string|WPSelection: 所选区块的客户端 ID。 attributeKey string: 所选区块的属性键。 startOffset number: 起始偏移量。 endOffset number: 结束偏移量。 返回值 Object: 操作对象。 selectNextBlock 生成用于指示应选择给定 clientId 之后区块的动作对象。 参数 clientId string: 区块客户端 ID。 selectPreviousBlock 生成用于指示应选择给定 clientId 之前区块(或可选地,从下至上其首个父级区块)的动作对象。 参数 clientId string: 区块客户端 ID。 fallbackToParent boolean: 若为 true,则在无前一个区块时选择首个父级区块。 setBlockEditingMode 为指定区块设置区块编辑模式。 相关 useBlockEditingMode 参数 clientId string: 区块客户端 ID,根容器则为 ''。 mode BlockEditingMode: 区块编辑模式。可选值为 'disabled'、 'contentOnly' 或 'default'。 返回值 Object: 操作对象。 setBlockMovingClientId 已弃用 设置正在移动的区块的客户端 ID。 返回值 Object:操作对象。 setBlockVisibility 设置指定区块在画布上是否可见的操作。 参数 updates Record:对于每个区块的 clientId,其新的可见性设置。 setHasControlledInnerBlocks 设置一个区块是否拥有受控内部区块的操作。 参数 clientId string: 区块的客户端 ID。 hasControlledInnerBlocks boolean: 如果区块的内部区块是受控的,则为 true。 setTemplateValidity 重置模板有效性的操作。 参数 isValid boolean: 模板有效性标志。 返回值 Object: 操作对象。 showInsertionPoint 显示插入点的操作。 参数 rootClientId ?string: 可选的要插入的区块列表的根客户端 ID。 index ?number: 区块应插入的索引位置。 __unstableOptions ?Object: 附加选项。 返回值 Object: 操作对象。 属性 __unstableWithInserter boolean: 是否显示插入器按钮。 operation WPDropOperation: 应用时要执行的操作,目前为 'insert' 或 'replace'。 startDraggingBlocks 返回一个动作对象,用于表示用户已开始拖拽区块。 参数 clientIds string[]: 被拖拽区块的客户端 ID 数组 返回值 Object: 动作对象。 startMultiSelect 启动区块多选操作的动作。 返回值 Object: 动作对象。 startTyping 返回一个动作对象,用于表示用户已开始输入。 返回值 Object: 动作对象。 stopDraggingBlocks 返回一个动作对象,用于表示用户已停止拖拽区块。 返回值 Object: 动作对象。 stopMultiSelect 停止区块多选的动作。 返回值 Object: 动作对象。 stopTyping 返回一个动作对象,用于表示用户已停止输入。 返回值 Object: 动作对象。 synchronizeTemplate 将模板与区块列表同步的动作。 返回值 Object: 动作对象。 toggleBlockHighlight 用于切换高亮块状态的操作。 参数 clientId string: 块的客户端 ID。 isHighlighted boolean: 高亮状态。 toggleBlockMode 返回一个用于在可视化模式和 HTML 模式之间切换块编辑模式的操作对象。 参数 clientId string: 块的客户端 ID。 返回值 Object: 操作对象。 toggleSelection 启用或禁用块选择的操作。 参数 isSelectionEnabled [boolean]: 是否应启用块选择。 返回 Object: 操作对象。 unsetBlockEditingMode 清除指定区块的区块编辑模式。 相关 useBlockEditingMode 参数 clientId string: 区块客户端 ID,根容器则为 ''。 返回 Object: 操作对象。 updateBlock 用于更新指定客户端 ID 区块的操作。 参数 clientId string: 区块客户端 ID。 updates Object: 待合并的区块属性。 返回值 Object: 操作对象。 updateBlockAttributes 用于更新指定客户端 ID 对应多个区块属性的操作。 参数 clientIds string|string[]: 区块客户端 ID。 attributes Object: 待合并的区块属性。如果 options.uniqueByBlock 为 true,则应按 clientIds 作为键进行组织。 options Object: 更新选项。 options.uniqueByBlock [boolean]: 客户端 ID 数组中的每个区块是否具有唯一的属性集。 返回值 Object: 操作对象。 updateBlockListSettings 用于更改指定区块嵌套设置的操作。 参数 clientId string | SettingsByClientId: 要获取嵌套设置的区块客户端 ID,或按客户端 ID 分组的设置对象。 settings Object: 包含嵌套区块新设置的对象。 返回值 Object: 操作对象 updateSettings 更新区块编辑器设置的操作。 参数 settings Object: 更新后的设置 返回值 Object: 操作对象 validateBlocksToTemplate 区块有效性取决于区块状态(在重置时)和模板设置。作为对其分散在不同状态部分的一种折中方案,它在此处被实现为区块重置操作的一个副作用。 参数 blocks Array: 区块数组。