gutenbergdocs/docs/reference-guides/data/data-core.md
2025-10-22 01:40:18 +08:00

24 KiB
Raw Permalink Blame History

撤销

触发此操作可撤销对实体记录的最后一次编辑(如果存在)。

hasEntityRecord

若给定参数对应的实体记录已接收则返回 true否则返回 false。

注意:若本地状态中不存在该实体记录,此操作不会触发从 API 请求实体记录。

参数

  • state State: 状态树
  • kind string: 实体类型
  • name string: 实体名称
  • key EntityRecordKey: 记录主键
  • query GetRecordsHttpQuery: 可选查询条件

返回值

  • boolean: 是否已接收到实体记录

hasEntityRecords

若给定参数对应的实体记录集已接收则返回 true否则返回 false。

参数

  • state State: 状态树
  • kind string: 实体类型
  • name string: 实体名称
  • query GetRecordsHttpQuery: 可选筛选查询。有效查询参数请参阅 REST API 手册中的参考文档,选择对应实体类型后查看“列出[实体类型]”可用参数。

返回值

  • boolean: 是否已接收到实体记录集

hasFetchedAutosaves

若自动保存记录的 REST 请求已完成则返回 true。

参数

  • state State: 状态树
  • postType string: 父级文章类型
  • postId EntityRecordKey: 父级文章ID

返回值

  • boolean: REST 请求是否已完成

hasRedo

若实体记录编辑历史中存在当前撤销偏移量之后的下一个编辑操作则返回 true否则返回 false。

参数

  • state State: 状态树

返回值

  • boolean: 是否存在后续编辑操作

hasUndo

若实体记录编辑历史中存在当前撤销偏移量之前的上一编辑操作则返回 true否则返回 false。

参数

  • state State: 状态树

返回值

  • boolean: 是否存在先前编辑操作

isAutosavingEntityRecord

若指定实体记录正在自动保存则返回 true否则返回 false。

参数

  • state State: 状态树
  • kind string: 实体类型
  • name string: 实体名称
  • recordId EntityRecordKey: 记录ID

返回值

  • boolean: 实体记录是否正在自动保存

isDeletingEntityRecord

若指定实体记录正在删除则返回 true否则返回 false。

参数

  • state State: 状态树
  • kind string: 实体类型
  • name string: 实体名称
  • recordId EntityRecordKey: 记录ID

返回值

  • boolean: 实体记录是否正在删除

isPreviewEmbedFallback

判断返回的预览是否为 oEmbed 链接回退方案。

当 WordPress 检测到某个 URL 无法嵌入时,可配置为返回该 URL 的简单链接。我们需要根据 oEmbed 预览 API 的返回结果来判断 URL 是否可嵌入。

参数

  • state State: 数据状态
  • url string: 嵌入的 URL

返回值

  • boolean: 该 URL 的预览是否为 oEmbed 链接回退

isRequestingEmbedPreview

若正在请求嵌入预览数据则返回 true否则返回 false。

参数

  • state State: 数据状态
  • url string: 预览对应的 URL

返回值

  • boolean: 是否正在请求嵌入预览

isSavingEntityRecord

若指定实体记录正在保存则返回 true否则返回 false。

参数

  • state State: 状态树
  • kind string: 实体类型
  • name string: 实体名称
  • recordId EntityRecordKey: 记录ID

返回值

  • boolean: 实体记录是否正在保存

操作

getEntity

已弃用 自 WordPress 6.0 起。请改用 getEntityConfig

根据实体的种类和名称返回其配置。

参数

  • state State:数据状态。
  • kind string:实体种类。
  • name string:实体名称。

返回值

  • any:实体配置

getEntityConfig

根据实体的种类和名称返回其配置。

参数

  • state State:数据状态。
  • kind string:实体种类。
  • name string:实体名称。

返回值

  • any:实体配置

getEntityRecord

根据键返回实体的记录对象。如果值尚未接收,则返回 null;如果已知该实体不存在,则返回 undefined;如果实体存在且已接收,则返回实体对象。

参数

  • state State:状态树。
  • kind string:实体种类。
  • name string:实体名称。
  • key EntityRecordKey:可选的记录键。如果请求全局记录(例如站点设置),可以省略键。如果请求特定项目,则必须始终包含键。
  • query GetRecordsHttpQuery:可选的查询。如果请求特定字段,字段必须始终包含 ID。有关有效的查询参数请参阅 REST API 手册中的参考,并选择实体种类。然后查看“检索 [实体种类]”可用的参数。

返回值

  • EntityRecord | undefined:记录。

getEntityRecordEdits

返回指定实体记录的编辑内容。

参数

  • state State:状态树。
  • kind string:实体种类。
  • name string:实体名称。
  • recordId EntityRecordKey:记录 ID。

返回值

  • Optional< any >:实体记录的编辑内容。

getEntityRecordNonTransientEdits

返回指定实体记录的非临时编辑内容。

临时编辑不会创建撤销级别,并且不会用于变更检测。它们在实体的配置中定义。

参数

  • state State:状态树。
  • kind string:实体种类。
  • name string:实体名称。
  • recordId EntityRecordKey:记录 ID。

返回值

  • Optional< any >:实体记录的非临时编辑内容。

getEntityRecords

返回实体的记录。

参数

  • state State:状态树。
  • kind string:实体种类。
  • name string:实体名称。
  • query GetRecordsHttpQuery:可选的查询条件。如果请求特定字段,字段必须始终包含 ID。有关有效的查询参数请参阅 REST API 手册中的参考,并选择实体种类。然后查看“列出 [实体种类]”可用的参数。

返回值

  • EntityRecord[] | null:记录。

getEntityRecordsTotalItems

返回给定查询下实体的总可用记录数(忽略分页)。

参数

  • state State:状态树。
  • kind string:实体种类。
  • name string:实体名称。
  • query GetRecordsHttpQuery:可选的查询条件。如果请求特定字段,字段必须始终包含 ID。有关有效的查询参数请参阅 REST API 手册中的参考,并选择实体种类。然后查看“列出 [实体种类]”可用的参数。

返回值

  • number | null:数字或 null。

getEntityRecordsTotalPages

返回给定查询下的可用页数。

参数

  • state State:状态树。
  • kind string:实体种类。
  • name string:实体名称。
  • query GetRecordsHttpQuery:可选的查询条件。如果请求特定字段,字段必须始终包含 ID。有关有效的查询参数请参阅 REST API 手册中的参考,并选择实体种类。然后查看“列出 [实体种类]”可用的参数。

返回值

  • number | null:数字或 null。

WordPress 核心数据

命名空间:core

动态生成的选择器

这里提供了一系列用户友好的选择器,它们是对通用选择器 getEntityRecordgetEntityRecords 的封装,可用于获取各类实体的信息。

getPostType

返回指定文章类型的信息。

使用示例

import { useSelect } from '@wordpress/data';
import { store as coreDataStore } from '@wordpress/core-data';

const postType = useSelect(
	( select ) => select( coreDataStore ).getPostType( 'post' )

	// 等价于select( coreDataStore ).getEntityRecord( 'root', 'postType', 'post' )
);

参数

  • postType string

返回值

  • EntityRecord | undefined: 记录对象

getPostTypes

返回文章类型的信息。

使用示例

import { useSelect } from '@wordpress/data';
import { store as coreDataStore } from '@wordpress/core-data';

const postTypes = useSelect( ( select ) => {
	return select( coreDataStore ).getPostTypes( { per_page: 4 } );

	// 等价于:
	// select( coreDataStore ).getEntityRecords( 'root', 'postType', { per_page: 4 } );
} );

参数

  • query GetRecordsHttpQuery: 可选的查询条件。如需请求特定字段字段必须始终包含ID。有效查询参数请参阅REST API手册中的参考文档,选择实体类型后查看"列出[实体类型]"可用的参数。

返回值

  • EntityRecord[] | null: 记录数组

getTaxonomy

返回指定分类法的信息。

使用示例

import { useSelect } from '@wordpress/data';
import { store as coreDataStore } from '@wordpress/core-data';

const taxonomy = useSelect( ( select ) => {
	return select( coreDataStore ).getTaxonomy( 'category' );

	// 等价于:
	// select( coreDataStore ).getEntityRecord( 'root', 'taxonomy', 'category' );
} );

参数

  • taxonomy string

返回值

  • EntityRecord | undefined: 记录对象

getTaxonomies

返回分类法的信息。

使用示例

import { useSelect } from '@wordpress/data';
import { store as coreDataStore } from '@wordpress/core-data';

const taxonomies = useSelect( ( select ) => {
	return select( coreDataStore ).getTaxonomies( { type: 'post' } );

	// 等价于:
	// select( coreDataStore ).getEntityRecords( 'root', 'taxonomy', { type: 'post' } );
} );

参数

  • query GetRecordsHttpQuery: 可选的查询条件。如需请求特定字段字段必须始终包含ID。有效查询参数请参阅REST API手册中的参考文档,选择实体类型后查看"列出[实体类型]"可用的参数。

返回值

  • EntityRecord[] | null: 记录数组

其他选择器

canUser

返回当前用户是否可以对指定REST资源执行给定操作。

调用此方法可能通过 canUser() 解析器触发对REST API的OPTIONS请求。

https://developer.wordpress.org/rest-api/reference/

参数

  • state State: 数据状态
  • action string: 要检查的操作。可选值:'create'、'read'、'update'、'delete'
  • resource string | EntityResource: 要检查的实体资源。接受实体对象 { kind: 'postType', name: 'attachment', id: 1 } 或字符串形式的REST基础路径 - media
  • id EntityRecordKey: 要检查的REST资源ID可选

返回值

  • boolean | undefined: 用户是否能执行该操作如果OPTIONS请求仍在进行中则返回 undefined

canUserEditEntityRecord

返回当前用户是否可以编辑指定实体。

调用此方法可能通过 canUser() 解析器触发对REST API的OPTIONS请求。

https://developer.wordpress.org/rest-api/reference/

参数

  • state State: 数据状态
  • kind string: 实体类型
  • name string: 实体名称
  • recordId EntityRecordKey: 记录ID

返回值

  • boolean | undefined: 用户是否可以编辑如果OPTIONS请求仍在进行中则返回 undefined

getLastEntityDeleteError

返回指定实体记录的最后删除错误。

参数

  • state State:状态树。
  • kind string:实体类型。
  • name string:实体名称。
  • recordId EntityRecordKey记录ID。

返回值

  • any:实体记录的保存错误。

getLastEntitySaveError

返回指定实体记录的最后保存错误。

参数

  • state State:状态树。
  • kind string:实体类型。
  • name string:实体名称。
  • recordId EntityRecordKey记录ID。

返回值

  • any:实体记录的保存错误。

getRawEntityRecord

通过键返回实体的记录对象,其属性映射为原始值。

参数

  • state State:状态树。
  • kind string:实体类型。
  • name string:实体名称。
  • key EntityRecordKey:记录的键。

返回值

  • EntityRecord | undefined:包含实体原始属性的对象。

getRedoEdit

自 6.3 版本起已弃用

从当前撤销偏移量中返回实体记录编辑历史中的下一个编辑(如果有)。

参数

  • state State:状态树。

返回值

  • Optional< any >:编辑内容。

getReferenceByDistinctEdits

当编辑值发生变化时返回一个新的引用。这在通过严格相等比较返回值来推断状态之间是否发生编辑时非常有用。

用法

const hasEditOccurred = (
   getReferenceByDistinctEdits( beforeState ) !==
   getReferenceByDistinctEdits( afterState )
);

参数

  • state 编辑器状态。

返回值

  • 一个仅在编辑发生时引用才会改变的值。

getRevision

返回父实体的单个特定修订版本。

参数

  • state State:状态树。
  • kind string:实体类型。
  • name string:实体名称。
  • recordKey EntityRecordKey:要获取修订版本的实体记录的键。
  • revisionKey EntityRecordKey:修订版本的键。
  • query GetRecordsHttpQuery可选查询。如果请求特定字段字段必须始终包含ID。有关有效查询参数请参阅 REST API 手册 中的修订模式,然后查看“检索 [实体类型]”可用的参数。

返回值

  • RevisionRecord | Record< PropertyKey, never > | undefined:记录。

getRevisions

返回实体的修订版本。

参数

  • state State:状态树。
  • kind string:实体类型。
  • name string:实体名称。
  • recordKey EntityRecordKey:要获取修订版本的实体记录的键。
  • query GetRecordsHttpQuery可选查询。如果请求特定字段字段必须始终包含ID。有关有效查询参数请参阅 REST API 手册 中的修订模式,然后查看“检索 [实体类型]”可用的参数。

返回值

  • RevisionRecord[] | null:记录。

getThemeSupports

返回索引中的主题支持数据。

参数

  • state State:数据状态。

返回值

  • any:索引数据。

getUndoEdit

自 6.3 版本起已弃用

从当前撤销偏移量中返回实体记录编辑历史中的上一个编辑(如果有)。

参数

  • state State:状态树。

返回值

  • Optional< any >:编辑内容。

getUserPatternCategories

检索已注册的用户模式分类。

参数

  • state State:数据状态。

返回值

  • Array< UserPatternCategory >:用户模式分类数组。

getUserQueryResults

返回由查询ID返回的所有用户。

参数

  • state State:数据状态。
  • queryID string查询ID。

返回值

  • ET.User< 'edit' >[]:用户列表。

hasEditsForEntityRecord

如果指定的实体记录有编辑,则返回 true否则返回 false。

参数

  • state State:状态树。
  • kind string:实体类型。
  • name string:实体名称。
  • recordId EntityRecordKey记录ID。

返回值

  • boolean:实体记录是否有编辑。

getAuthors获取作者列表

已弃用(自 11.3 版本起)。调用方应改用 select( 'core' ).getUsers({ who: 'authors' })

返回所有可用的作者。

参数

  • state State:数据状态。
  • query GetRecordsHttpQuery:可选的查询参数对象,随请求一同发送。有关有效的查询参数,请参阅 REST API 手册中的用户页面,并查看列出用户检索用户的参数说明。

返回值

  • ET.User[]:作者列表。

getAutosave获取自动保存内容

返回文章和作者的自动保存内容。

参数

  • state State:状态树。
  • postType string:父文章的类型。
  • postId EntityRecordKey:父文章的 ID。
  • authorId EntityRecordKey:作者的 ID。

返回值

  • EntityRecord | undefined:文章和作者的自动保存内容。

getAutosaves获取自动保存列表

返回文章的最新自动保存内容。

由于后端会为每篇文章的每位作者存储一个自动保存内容,因此可能返回多个自动保存记录。

参数

  • state State:状态树。
  • postType string:父文章的类型。
  • postId EntityRecordKey:父文章的 ID。

返回值

  • Array< any > | undefined:文章的自动保存内容数组,如果没有则返回 undefined

getBlockPatternCategories获取区块模式分类

检索已注册的区块模式分类列表。

参数

  • state State:数据状态。

返回值

  • Array< any >:区块模式分类列表。

getBlockPatterns获取区块模式

检索已注册的区块模式列表。

参数

  • state State:数据状态。

返回值

  • Array< any >:区块模式列表。

getCurrentTheme获取当前主题

返回当前主题。

参数

  • state State:数据状态。

返回值

  • any:当前主题。

getCurrentThemeGlobalStylesRevisions获取当前主题全局样式修订版本

已弃用(自 WordPress 6.5.0 起)。调用方应改用 select( 'core' ).getRevisions( 'root', 'globalStyles', ${ recordKey } ),其中 recordKey 是全局样式父文章的 ID。

返回当前全局样式主题的修订版本。

参数

  • state State:数据状态。

返回值

  • Array< object > | null:当前全局样式。

getCurrentUser获取当前用户

返回当前用户。

参数

  • state State:数据状态。

返回值

  • ET.User< 'view' >:当前用户对象。

getDefaultTemplateId获取默认模板 ID

返回用于渲染指定查询的默认模板。

参数

  • state State:数据状态。
  • query TemplateQuery:查询参数。

返回值

  • string:指定查询的默认模板 ID。

getEditedEntityRecord获取编辑后的实体记录

返回指定的实体记录,并合并其编辑内容。

参数

  • state State:状态树。
  • kind string:实体类型。
  • name string:实体名称。
  • recordId EntityRecordKey:记录 ID。

返回值

  • ET.Updatable< EntityRecord > | false:合并编辑内容后的实体记录。

getEmbedPreview获取嵌入预览

返回指定 URL 的嵌入预览内容。

参数

  • state State:数据状态。
  • url string:嵌入的 URL。

返回值

  • any:如果预览尚未获取,则返回 undefined;否则返回从嵌入预览 API 获取的预览内容。

getEntitiesByKind按类型获取实体

已弃用(自 WordPress 6.0 起)。请改用 getEntitiesConfig

返回指定类型的已加载实体。

参数

  • state State:数据状态。
  • kind string:实体类型。

返回值

  • Array< any >:与类型匹配的实体配置数组。

getEntitiesConfig获取实体配置

返回指定类型的已加载实体。

参数

  • state State:数据状态。
  • kind string:实体类型。

返回值

  • Array< any >:与类型匹配的实体配置数组。

addEntities添加实体

返回用于添加新实体的操作对象。

参数

  • entities Array:接收到的实体。

返回值

  • Object:操作对象。

deleteEntityRecord删除实体记录

触发删除实体记录的操作。

参数

  • kind string:被删除实体的类型。
  • name string:被删除实体的名称。
  • recordId number|string:被删除实体的记录 ID。
  • query ?ObjectDELETE API 调用的特殊查询参数。
  • options [Object]:删除选项。
  • options.__unstableFetch [Function]:仅限内部使用。用于替代 apiFetch() 调用的函数,必须返回一个 Promise。
  • options.throwOnError [boolean]:如果为 false此操作将抑制所有异常默认为 false。

editEntityRecord编辑实体记录

返回触发对实体记录进行编辑的操作对象。

参数

  • kind string:被编辑实体记录的类型。
  • name string:被编辑实体记录的名称。
  • recordId number|string:被编辑实体记录的记录 ID。
  • edits Object:编辑内容。
  • options Object:编辑选项。
  • options.undoIgnore [boolean]:是否在撤销历史中忽略此编辑。

返回值

  • Object:操作对象。

receiveDefaultTemplateId接收默认模板 ID

返回用于为给定查询设置模板的操作对象。

参数

  • query Object:查询对象。
  • templateId string:解析后的模板 ID。

返回值

  • Object:操作对象。

receiveEntityRecords接收实体记录

返回用于表示已接收到实体记录的操作对象。

参数

  • kind string:接收到的实体记录的类型。
  • name string:接收到的实体记录的名称。
  • records Array|Object:接收到的记录。
  • query ?Object:查询对象。
  • invalidateCache ?boolean:是否应使查询缓存失效。
  • edits ?Object:要重置的编辑内容。
  • meta ?Object:分页相关的元信息。

返回值

  • Object:操作对象。

receiveNavigationFallbackId接收导航回退 ID

返回表示已接收到回退导航菜单 ID 的操作对象。

参数

  • fallbackId integer:回退导航菜单的 ID。

返回值

  • Object:操作对象。

receiveRevisions接收修订版本

触发接收修订条目的操作。

参数

  • kind string:接收到的实体记录修订的类型。
  • name string:接收到的实体记录修订的名称。
  • recordKey number|string:要获取修订的实体记录的键。
  • records Array|Object:接收到的修订内容。
  • query ?Object:查询对象。
  • invalidateCache ?boolean:是否应使查询缓存失效。
  • meta ?Object:分页相关的元信息。

receiveThemeSupports接收主题支持功能

自 WP 5.9 起已弃用,不再有用,请直接使用选择器。

返回用于表示已接收到索引的操作对象。

返回值

  • Object:操作对象。

receiveUploadPermissions接收上传权限

自 WP 5.9 起已弃用,请使用 receiveUserPermission 替代。

返回用于表示已接收到上传权限的操作对象。

参数

  • hasUploadPermissions boolean:用户是否有上传文件的权限?

返回值

  • Object:操作对象。

redo重做

触发重做上一次对实体记录的撤销编辑(如果有的话)。

saveEditedEntityRecord保存已编辑的实体记录

触发保存实体记录的编辑内容。

参数

  • kind string:实体的类型。
  • name string:实体的名称。
  • recordId Object:记录的 ID。
  • options Object=:保存选项。

saveEntityRecord保存实体记录

触发保存实体记录的操作。

参数

  • kind string:接收到的实体的类型。
  • name string:接收到的实体的名称。
  • record Object:要保存的记录。
  • options Object:保存选项。
  • options.isAutosave [boolean]:是否为自动保存。
  • options.__unstableFetch [Function]:仅限内部使用。用于替代 apiFetch() 调用的函数,必须返回一个 Promise。
  • options.throwOnError [boolean]:如果为 false此操作将抑制所有异常默认为 false。