gutenbergdocs/reference-guides/data/data-core.md
2025-10-22 01:33:45 +08:00

938 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 撤销
触发此操作可撤销对实体记录的最后一次编辑(如果存在)。
<!-- END TOKEN(Autogenerated actions|../../../packages/core-data/src/actions.js) -->
### 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 手册中的[参考文档](https://developer.wordpress.org/rest-api/reference/),选择对应实体类型后查看“列出[实体类型]”可用参数。
_返回值_
- `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`: 实体记录是否正在保存
<!-- END TOKEN(Autogenerated selectors|../../../packages/core-data/src/selectors.ts) -->
## 操作
<!-- START TOKEN(Autogenerated actions|../../../packages/core-data/src/actions.js) -->
### 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 手册中的[参考](https://developer.wordpress.org/rest-api/reference/),并选择实体种类。然后查看“检索 [实体种类]”可用的参数。
_返回值_
- `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 手册中的[参考](https://developer.wordpress.org/rest-api/reference/),并选择实体种类。然后查看“列出 [实体种类]”可用的参数。
_返回值_
- `EntityRecord[] | null`:记录。
### getEntityRecordsTotalItems
返回给定查询下实体的总可用记录数(忽略分页)。
_参数_
- _state_ `State`:状态树。
- _kind_ `string`:实体种类。
- _name_ `string`:实体名称。
- _query_ `GetRecordsHttpQuery`:可选的查询条件。如果请求特定字段,字段必须始终包含 ID。有关有效的查询参数请参阅 REST API 手册中的[参考](https://developer.wordpress.org/rest-api/reference/),并选择实体种类。然后查看“列出 [实体种类]”可用的参数。
_返回值_
- `number | null`:数字或 null。
### getEntityRecordsTotalPages
返回给定查询下的可用页数。
_参数_
- _state_ `State`:状态树。
- _kind_ `string`:实体种类。
- _name_ `string`:实体名称。
- _query_ `GetRecordsHttpQuery`:可选的查询条件。如果请求特定字段,字段必须始终包含 ID。有关有效的查询参数请参阅 REST API 手册中的[参考](https://developer.wordpress.org/rest-api/reference/),并选择实体种类。然后查看“列出 [实体种类]”可用的参数。
_返回值_
- `number | null`:数字或 null。
# WordPress 核心数据
命名空间:`core`
## 动态生成的选择器
这里提供了一系列用户友好的选择器,它们是对通用选择器 `getEntityRecord``getEntityRecords` 的封装,可用于获取各类实体的信息。
### getPostType
返回指定文章类型的信息。
*使用示例*
```javascript
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
返回文章类型的信息。
*使用示例*
```javascript
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手册中的[参考文档](https://developer.wordpress.org/rest-api/reference/),选择实体类型后查看"列出[实体类型]"可用的参数。
*返回值*
- `EntityRecord[] | null`: 记录数组
### getTaxonomy
返回指定分类法的信息。
*使用示例*
```javascript
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
返回分类法的信息。
*使用示例*
```javascript
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手册中的[参考文档](https://developer.wordpress.org/rest-api/reference/),选择实体类型后查看"列出[实体类型]"可用的参数。
*返回值*
- `EntityRecord[] | null`: 记录数组
## 其他选择器
<!-- START TOKEN(Autogenerated selectors|../../../packages/core-data/src/selectors.ts) -->
### 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 手册](https://developer.wordpress.org/rest-api/reference/) 中的修订模式,然后查看“检索 [实体类型]”可用的参数。
**返回值**
- `RevisionRecord | Record< PropertyKey, never > | undefined`:记录。
### getRevisions
返回实体的修订版本。
**参数**
- _state_ `State`:状态树。
- _kind_ `string`:实体类型。
- _name_ `string`:实体名称。
- _recordKey_ `EntityRecordKey`:要获取修订版本的实体记录的键。
- _query_ `GetRecordsHttpQuery`可选查询。如果请求特定字段字段必须始终包含ID。有关有效查询参数请参阅 [REST API 手册](https://developer.wordpress.org/rest-api/reference/) 中的修订模式,然后查看“检索 [实体类型]”可用的参数。
**返回值**
- `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 手册中的[用户页面](https://developer.wordpress.org/rest-api/reference/users/),并查看[列出用户](https://developer.wordpress.org/rest-api/reference/users/#list-users)和[检索用户](https://developer.wordpress.org/rest-api/reference/users/#retrieve-a-user)的参数说明。
**返回值**
- `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_ `?Object`DELETE 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。