- インストール
- 例
- エンティティとは何ですか?
- アクション
- セレクタ
- canUser
- canUserEditEntityRecord
- getAuthors
- getAutosave
- getAutosaves
- getBlockPatternCategories
- getBlockPatterns
- getCurrentTheme
- getCurrentThemeGlobalStylesRevisions
- getCurrentUser
- getDefaultTemplateId
- getEditedEntityRecord
- getEmbedPreview
- getEntitiesByKind
- getEntitiesConfig
- getEntity
- getEntityConfig
- getEntityRecord
- getEntityRecordEdits
- getEntityRecordNonTransientEdits
- getEntityRecords
- getEntityRecordsTotalItems
- getEntityRecordsTotalPages
- getLastEntityDeleteError
- getLastEntitySaveError
- getRawEntityRecord
- getRedoEdit
- getReferenceByDistinctEdits
- getRevision
- getRevisions
- getThemeSupports
- getUndoEdit
- getUserPatternCategories
- getUserQueryResults
- hasEditsForEntityRecord
- hasEntityRecords
- hasFetchedAutosaves
- hasRedo
- hasUndo
- isAutosavingEntityRecord
- isDeletingEntityRecord
- isPreviewEmbedFallback
- isRequestingEmbedPreview
- isSavingEntityRecord
- Hooks
- このパッケージへの貢献
インストール
モジュールをインストールします
npm install @wordpress/core-data --save
このパッケージは、あなたのコードがES2015+環境で実行されることを前提としています。もし、言語機能やAPIのサポートが限られているか、全くない環境を使用している場合は、コードに@wordpress/babel-preset-default
に同梱されているポリフィルを含める必要があります。
例
以下は、著者のリストを単純にレンダリングするコンポーネントの例です:
const { useSelect } = wp.data;
function MyAuthorsListBase() {
const authors = useSelect( ( select ) => {
return select( 'core' ).getUsers( { who: 'authors' } );
}, [] );
if ( ! authors ) {
return null;
}
return (
<ul>
{ authors.map( ( author ) => (
<li key={ author.id }>{ author.name }</li>
) ) }
</ul>
);
}
エンティティとは何ですか?
エンティティはデータソースを表します。エンティティ内の各アイテムはエンティティレコードと呼ばれます。利用可能なエンティティは、rootEntitiesConfig
の./src/entities.jsで定義されています。
現時点では、このパッケージによって定義されたデフォルトのエンティティはREST APIハンドブックにマッピングされていますが、他のAPIと対話することを妨げる設計はありません。
以下は、rootEntitiesConfig
のいくつかのプロパティの説明です。
エンティティとデータソースの接続
baseURL
- タイプ: 文字列。
- 例:
'/wp/v2/users'
.
このプロパティは、エンティティを特定のエンドポイントにマッピングし、その相対URLを値として取ります。
baseURLParams
- タイプ:
object
. - 例:
{ context: 'edit' }
.
リクエストに追加のパラメータをクエリ文字列として追加します。各プロパティはフィールド/値ペアに変換されます。例えば、baseURL: '/wp/v2/users'
とbaseURLParams: { context: 'edit' }
が与えられた場合、URLは/wp/v2/users?context=edit
になります。
key
- タイプ:
string
. - 例:
'slug'
.
エンティティエンジンは、APIレスポンスを複数のエンティティレコードに変換することを目指しています。レスポンスは異なる形状で来ることがあり、それぞれ異なる方法で処理されます。
単一のオブジェクトを表すレスポンスは、単一のエンティティレコードにマッピングされます。例えば:
{
"title": "...",
"description": "...",
"...": "..."
}
配列として形作られたコレクションを表すレスポンスは、配列の要素数だけエンティティレコードにマッピングされます。例えば:
[
{ "id": 1, "name": "...", "...": "..." },
{ "id": 2, "name": "...", "...": "..." },
{ "id": 3, "name": "...", "...": "..." }
]
また、レスポンスがオブジェクトとして形作られ、そのキーがプロパティの値の1つであるコレクションを表す場合もあります。ネストされた各オブジェクトは独自のエンティティレコードであるべきです。この場合、単一のオブジェクト/エンティティと混同されないように、エンティティ構成はオブジェクトキーとして機能する値を保持するプロパティキーを提供する必要があります。以下の例では、slug
プロパティの値がオブジェクトキーとして機能しているため、エンティティ構成は各ネストされたオブジェクトが個別のエンティティレコードとして処理されるためにkey: 'slug'
を宣言する必要があります:
{
"publish": { "slug": "publish", "name": "Published", "...": "..." },
"draft": { "slug": "draft", "name": "Draft", "...": "..." },
"future": { "slug": "future", "name": "Future", "...": "..." }
}
エンティティレコードとの対話
エンティティレコードはユニークです。コレクションであるエンティティの場合、各レコードには管理用の識別子として機能するid
プロパティがあると想定されます。エンティティがkey
を定義している場合、そのプロパティは想定されるid
の代わりに識別子として使用されます。
name
- タイプ:
string
. - 例:
user
.
エンティティの名前。これを使用して、エンティティと対話するユーティリティ(セレクタ、アクション、フック)で使用します。
kind
- タイプ:
string
. - 例:
root
.
エンティティはkind
によってグループ化できます。これを使用して、エンティティと対話するユーティリティ(セレクタ、アクション、フック)で使用します。
このパッケージは、getEntityRecords
、getEntityRecord
などのプロパティを活用して、エンティティと対話するための一般的なメソッドを提供します:
// Get the record collection for the user entity.
wp.data.select( 'core' ).getEntityRecords( 'root', 'user' );
// Get a single record for the user entity.
wp.data.select( 'core' ).getEntityRecord( 'root', 'user', recordId );
plural
- タイプ:
string
. - 例:
statuses
.
一般的なユーティリティ(getEntityRecords
、getEntityRecord
など)に加えて、このパッケージはroot
の種類のエンティティレコード(コレクションと単一レコードの両方)と対話するための見栄えの良いメソッドを動的に作成します。一般的なメソッドと見栄えの良いメソッドを以下のように比較します:
// Collection
wp.data.select( 'core' ).getEntityRecords( 'root', 'user' );
wp.data.select( 'core' ).getUsers();
// Single record
wp.data.select( 'core' ).getEntityRecord( 'root', 'user', recordId );
wp.data.select( 'core' ).getUser( recordId );
時には、エンティティの複数形が通常ではない場合があります(-s
サフィックスを追加することで形成されない)。エンティティ構成のplural
プロパティは、エンティティのために作成された動的メソッドの代替の複数形を宣言することを可能にします。例えば、status
エンティティがstatuses
の複数形を宣言している場合、次のメソッドが作成されます:
// Collection
wp.data.select( 'core' ).getStatuses();
// Single record
wp.data.select( 'core' ).getStatus( recordId );
アクション
以下のディスパッチアクションクリエーターのセットは、wp.data.dispatch( 'core' )
によって返されるオブジェクトで利用可能です:
addEntities
新しいエンティティを追加するために使用されるアクションオブジェクトを返します。
パラメータ
- entities
Array
: 受け取ったエンティティ。
返り値
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]
: 編集を元に戻し履歴で無視するかどうか。
返り値
receiveDefaultTemplateId
特定のクエリのテンプレートを設定するために使用されるアクションオブジェクトを返します。
パラメータ
- query
Object
: ルックアップクエリ。 - templateId
string
: 解決されたテンプレートID。
返り値
receiveEntityRecords
エンティティレコードが受信されたことを示すために使用されるアクションオブジェクトを返します。
パラメータ
- kind
string
: 受信したエンティティレコードの種類。 - name
string
: 受信したエンティティレコードの名前。 - records
Array|Object
: 受信したレコード。 - query
?Object
: クエリオブジェクト。 - invalidateCache
?boolean
: クエリキャッシュを無効にする必要がありますか。 - edits
?Object
: リセットする編集。 - meta
?Object
: ページネーションに関するメタ情報。
返り値
receiveNavigationFallbackId
フォールバックナビゲーションメニューIDが受信されたことを示すアクションオブジェクトを返します。
パラメータ
- fallbackId
integer
: フォールバックナビゲーションメニューのID
返り値
receiveRevisions
リビジョンアイテムを受信するためにトリガーされるアクション。
パラメータ
- kind
string
: 受信したエンティティレコードのリビジョンの種類。 - name
string
: 受信したエンティティレコードのリビジョンの名前。 - recordKey
number|string
: 取得したいリビジョンのエンティティレコードのキー。 - records
Array|Object
: 受信したリビジョン。 - query
?Object
: クエリオブジェクト。 - invalidateCache
?boolean
: クエリキャッシュを無効にする必要がありますか。 - meta
?Object
: ページネーションに関するメタ情報。
receiveThemeSupports
非推奨 WP 5.9以降、これはもはや役に立たないため、セレクタを直接使用してください。
インデックスが受信されたことを示すアクションオブジェクトを返します。
返り値
receiveUploadPermissions
非推奨 WP 5.9以降、代わりにreceiveUserPermissionを使用してください。
アップロード権限が受信されたことを示すアクションオブジェクトを返します。
パラメータ
- hasUploadPermissions
boolean
: ユーザーはファイルをアップロードする権限がありますか?
返り値
redo
エンティティレコードに対する最後の元に戻した編集をやり直すためにトリガーされるアクション。
saveEditedEntityRecord
エンティティレコードの編集を保存するためにトリガーされるアクション。
パラメータ
saveEntityRecord
エンティティレコードを保存するためにトリガーされるアクション。
パラメータ
- kind
string
: 受信したエンティティの種類。 - name
string
: 受信したエンティティの名前。 - record
Object
: 保存するレコード。 - options
Object
: 保存オプション。 - options.isAutosave
[boolean]
: これはオートセーブですか。 - options.__unstableFetch
[Function]
: 内部使用のみ。apiFetch()
の代わりに呼び出す関数。Promiseを返す必要があります。 - options.throwOnError
[boolean]
: falseの場合、このアクションはすべての例外を抑制します。デフォルトはfalseです。
undo
エンティティレコードに対する最後の編集を元に戻すためにトリガーされるアクション。
セレクタ
以下のセレクタは、wp.data.select( 'core' )
によって返されるオブジェクトで利用可能です:
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: 'root', name: 'media', id: 1 }
またはRESTベースを文字列として受け入れます –media
。 - id
EntityRecordKey
: チェックするRESTリソースのオプションID。
返り値
canUserEditEntityRecord
現在のユーザーが指定されたエンティティを編集できるかどうかを返します。
これを呼び出すと、canUser()
リゾルバを介してREST APIにOPTIONSリクエストがトリガーされる場合があります。
https://developer.wordpress.org/rest-api/reference/
パラメータ
- state
State
: データ状態。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードのID。
返り値
getAuthors
非推奨 11.3以降。呼び出し元は
select( 'core' ).getUsers({ who: 'authors' })
を代わりに使用する必要があります。
利用可能なすべての著者を返します。
パラメータ
- state
State
: データ状態。 - query
GetRecordsHttpQuery
: リクエストに含めるクエリパラメータのオプションオブジェクト。 有効なクエリパラメータについては、REST APIハンドブックのユーザーページを参照し、ユーザーのリストおよびユーザーを取得の引数を確認してください。
返り値
getAutosave
投稿と著者のオートセーブを返します。
パラメータ
- state
State
: ステートツリー。 - postType
string
: 親投稿のタイプ。 - postId
EntityRecordKey
: 親投稿のID。 - authorId
EntityRecordKey
: 著者のID。
返り値
getAutosaves
投稿の最新のオートセーブを返します。
バックエンドは、各投稿に対して著者ごとに1つのオートセーブを保存するため、複数のオートセーブを返す場合があります。
パラメータ
- state
State
: ステートツリー。 - postType
string
: 親投稿のタイプ。 - postId
EntityRecordKey
: 親投稿のID。
返り値
getBlockPatternCategories
登録されたブロックパターンカテゴリのリストを取得します。
パラメータ
- state
State
: データ状態。
返り値
getBlockPatterns
登録されたブロックパターンのリストを取得します。
パラメータ
- state
State
: データ状態。
返り値
getCurrentTheme
現在のテーマを返します。
パラメータ
- state
State
: データ状態。
返り値
getCurrentThemeGlobalStylesRevisions
非推奨 WordPress 6.5.0以降。呼び出し元は
select( 'core' ).getRevisions( 'root', 'globalStyles', ${ recordKey } )
を代わりに使用する必要があります。recordKey
はグローバルスタイルの親投稿のIDです。
現在のグローバルスタイルテーマのリビジョンを返します。
パラメータ
- state
State
: データ状態。
返り値
getCurrentUser
現在のユーザーを返します。
パラメータ
- state
State
: データ状態。
返り値
getDefaultTemplateId
特定のクエリをレンダリングするために使用されるデフォルトテンプレートを返します。
パラメータ
- state
State
: データ状態。 - query
TemplateQuery
: クエリ。
返り値
getEditedEntityRecord
指定されたエンティティレコードを返し、その編集内容とマージします。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードID。
返り値
getEmbedPreview
指定されたURLの埋め込みプレビューを返します。
パラメータ
- state
State
: データ状態。 - url
string
: 埋め込まれたURL。
返り値
getEntitiesByKind
非推奨 WordPress 6.0以降。代わりにgetEntitiesConfigを使用してください。
指定された種類のロードされたエンティティを返します。
パラメータ
- state
State
: データ状態。 - kind
string
: エンティティの種類。
返り値
getEntitiesConfig
指定された種類のロードされたエンティティを返します。
パラメータ
- state
State
: データ状態。 - kind
string
: エンティティの種類。
返り値
getEntity
非推奨 WordPress 6.0以降。代わりにgetEntityConfigを使用してください。
指定された種類と名前のエンティティ構成を返します。
パラメータ
- state
State
: データ状態。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。
返り値
getEntityConfig
指定された種類と名前のエンティティ構成を返します。
パラメータ
- state
State
: データ状態。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。
返り値
getEntityRecord
キーによってエンティティのレコードオブジェクトを返します。値がまだ受信されていない場合はnull
を返し、値のエンティティが存在しないことが知られている場合は未定義、存在し受信された場合はエンティティオブジェクトを返します。
パラメータ
- state
State
: ステートツリー - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - key
EntityRecordKey
: レコードのキー - query
GetRecordsHttpQuery
: オプションのクエリ。特定のフィールドをリクエストする場合、フィールドには常にIDを含める必要があります。有効なクエリパラメータについては、REST APIハンドブックのリファレンスを参照し、エンティティの種類を選択します。その後、「[エンティティの種類]を取得」の引数を確認します。
返り値
getEntityRecordEdits
指定されたエンティティレコードの編集を返します。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードID。
返り値
getEntityRecordNonTransientEdits
指定されたエンティティレコードの非一時的な編集を返します。
一時的な編集は元に戻しレベルを作成せず、変更検出の対象とはなりません。これらはエンティティの構成で定義されています。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードID。
返り値
getEntityRecords
エンティティのレコードを返します。
パラメータ
- state
State
: ステートツリー - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - query
GetRecordsHttpQuery
: オプションの用語クエリ。特定のフィールドをリクエストする場合、フィールドには常にIDを含める必要があります。有効なクエリパラメータについては、REST APIハンドブックのリファレンスを参照し、エンティティの種類を選択します。その後、「[エンティティの種類]のリスト」の引数を確認します。
返り値
getEntityRecordsTotalItems
指定されたクエリに対するエンティティの総利用可能レコードを返します(ページネーションを無視)。
パラメータ
- state
State
: ステートツリー - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - query
GetRecordsHttpQuery
: オプションの用語クエリ。特定のフィールドをリクエストする場合、フィールドには常にIDを含める必要があります。有効なクエリパラメータについては、REST APIハンドブックのリファレンスを参照し、エンティティの種類を選択します。その後、「[エンティティの種類]のリスト」の引数を確認します。
返り値
getEntityRecordsTotalPages
指定されたクエリに対する利用可能なページの数を返します。
パラメータ
- state
State
: ステートツリー - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - query
GetRecordsHttpQuery
: オプションの用語クエリ。特定のフィールドをリクエストする場合、フィールドには常にIDを含める必要があります。有効なクエリパラメータについては、REST APIハンドブックのリファレンスを参照し、エンティティの種類を選択します。その後、「[エンティティの種類]のリスト」の引数を確認します。
返り値
getLastEntityDeleteError
指定されたエンティティレコードの最後の削除エラーを返します。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードID。
返り値
getLastEntitySaveError
指定されたエンティティレコードの最後の保存エラーを返します。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードID。
返り値
getRawEntityRecord
キーによってエンティティのレコードオブジェクトを返し、その属性を生の値にマッピングします。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - key
EntityRecordKey
: レコードのキー。
返り値
getRedoEdit
非推奨 6.3以降
エンティティレコードの編集履歴から現在の元に戻しオフセットの次の編集を返します。
パラメータ
- state
State
: ステートツリー。
返り値
getReferenceByDistinctEdits
編集された値が変更されたときに新しい参照を返します。これは、戻り値の厳密な等価性を使用して、状態間で編集が行われた場所を推測するのに役立ちます。
使用法
const hasEditOccurred = (
getReferenceByDistinctEdits( beforeState ) !==
getReferenceByDistinctEdits( afterState )
);
パラメータ
- state エディターステート。
返り値
getRevision
親エンティティの特定のリビジョンを返します。
パラメータ
- state
State
: ステートツリー - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordKey
EntityRecordKey
: 取得したいリビジョンのエンティティレコードのキー。 - revisionKey
EntityRecordKey
: リビジョンのキー。 - query
GetRecordsHttpQuery
: オプションのクエリ。特定のフィールドをリクエストする場合、フィールドには常にIDを含める必要があります。リビジョンスキーマの有効なクエリパラメータについては、REST APIハンドブックのリビジョンセクションを参照してください。その後、「[エンティティの種類]を取得」の引数を確認します。
返り値
getRevisions
エンティティのリビジョンを返します。
パラメータ
- state
State
: ステートツリー - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordKey
EntityRecordKey
: 取得したいリビジョンのエンティティレコードのキー。 - query
GetRecordsHttpQuery
: オプションのクエリ。特定のフィールドをリクエストする場合、フィールドには常にIDを含める必要があります。リビジョンスキーマの有効なクエリパラメータについては、REST APIハンドブックのリビジョンセクションを参照してください。その後、「[エンティティの種類]を取得」の引数を確認します。
返り値
getThemeSupports
インデックス内のテーマサポートデータを返します。
パラメータ
- state
State
: データ状態。
返り値
getUndoEdit
非推奨 6.3以降
エンティティレコードの編集履歴から現在の元に戻しオフセットの前の編集を返します。
パラメータ
- state
State
: ステートツリー。
返り値
getUserPatternCategories
登録されたユーザーパターンカテゴリを取得します。
パラメータ
- state
State
: データ状態。
返り値
getUserQueryResults
クエリIDによって返されたすべてのユーザーを返します。
パラメータ
- state
State
: データ状態。 - queryID
string
: クエリID。
返り値
hasEditsForEntityRecord
指定されたエンティティレコードに編集がある場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードID。
返り値
hasEntityRecords
指定されたパラメータのセットに対してレコードが受信された場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: 状態ツリー - kind
string
: エンティティの種類。 - name
string
: エンティティ名。 - query
GetRecordsHttpQuery
: オプションの用語クエリ。有効なクエリパラメータについては、リファレンスを参照し、エンティティの種類を選択してください。その後、「リスト [エンティティの種類]」の利用可能な引数を確認してください。
返すもの
hasFetchedAutosaves
自動保存のRESTリクエストが完了した場合はtrueを返します。
パラメータ
- state
State
: 状態ツリー。 - postType
string
: 親投稿のタイプ。 - postId
EntityRecordKey
: 親投稿のID。
返すもの
hasRedo
現在の元に戻すオフセットからエンティティレコードの編集履歴に次の編集がある場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: 状態ツリー。
返すもの
hasUndo
現在の元に戻すオフセットからエンティティレコードの編集履歴に前の編集がある場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: 状態ツリー。
返すもの
isAutosavingEntityRecord
指定されたエンティティレコードが自動保存中である場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: 状態ツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティ名。 - recordId
EntityRecordKey
: レコードID。
返すもの
isDeletingEntityRecord
指定されたエンティティレコードが削除中である場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: 状態ツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティ名。 - recordId
EntityRecordKey
: レコードID。
返すもの
isPreviewEmbedFallback
返されたプレビューがoEmbedリンクのフォールバックであるかどうかを判断します。
WordPressは、埋め込み可能でない場合にURLへのシンプルなリンクを返すように構成できます。oEmbedプレビュAPIから返される内容に基づいて、URLが埋め込み可能かどうかを判断できる必要があります。
パラメータ
- state
State
: データ状態。 - url
string
: 埋め込まれたURL。
返すもの
isRequestingEmbedPreview
埋め込みプレビューデータのリクエストが進行中である場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: データ状態。 - url
string
: プレビューが対象となるURL。
返すもの
isSavingEntityRecord
指定されたエンティティレコードが保存中である場合はtrueを返し、そうでない場合はfalseを返します。
パラメータ
- state
State
: ステートツリー。 - kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - recordId
EntityRecordKey
: レコードID。
戻り値
Hooks
以下のセットのReactフックは、@wordpress/core-data
パッケージからインポート可能です:
useEntityBlockEditor
指定されたタイプの最も近いエンティティのブロックコンテンツのゲッターとセッターを返すフックです。
返り値は[ blocks, onInput, onChange ]
の形を持ちます。onInput
は、元に戻すレベルを作成せず、投稿を汚さないブロックの変更、すなわち非永続的な変更に使用され、onChange
は永続的な変更に使用されます。これらはBlockEditorProvider
のプロパティに直接マッピングされ、BlockEditorProvider
や類似のコンポーネントまたはフックと一緒に使用されることを意図しています。
パラメータ
- kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - options
Object
: - options.id
[string]
: コンテキストで提供されたものの代わりに使用するエンティティID。
戻り値
useEntityId
指定されたタイプの最も近いエンティティのIDを返すフックです。
パラメータ
useEntityProp
指定されたタイプの最も近いエンティティの指定されたプロパティの値とセッターを返すフックです。
パラメータ
- kind
string
: エンティティの種類。 - name
string
: エンティティの名前。 - prop
string
: プロパティ名。 - _id
[number|string]
: コンテキストで提供されたものの代わりに使用するエンティティID。
戻り値
[*, Function, *]
: 最初のアイテムがプロパティの値、2番目がセッター、3番目がraw
、rendered
、protected
プロパティなどの詳細情報を含むREST APIからの完全な値オブジェクトの配列です。
useEntityRecord
指定されたエンティティレコードを解決します。
使用法
import { useEntityRecord } from '@wordpress/core-data';
function PageTitleDisplay( { id } ) {
const { record, isResolving } = useEntityRecord( 'postType', 'page', id );
if ( isResolving ) {
return 'Loading...';
}
return record.title;
}
// Rendered in the application:
// <PageTitleDisplay id={ 1 } />
上記の例では、PageTitleDisplay
がアプリケーションにレンダリングされると、ページと解決の詳細がgetEntityRecord()
を使用してストアの状態から取得されるか、欠落している場合は解決されます。
import { useCallback } from 'react';
import { useDispatch } from '@wordpress/data';
import { __ } from '@wordpress/i18n';
import { TextControl } from '@wordpress/components';
import { store as noticeStore } from '@wordpress/notices';
import { useEntityRecord } from '@wordpress/core-data';
function PageRenameForm( { id } ) {
const page = useEntityRecord( 'postType', 'page', id );
const { createSuccessNotice, createErrorNotice } =
useDispatch( noticeStore );
const setTitle = useCallback(
( title ) => {
page.edit( { title } );
},
[ page.edit ]
);
if ( page.isResolving ) {
return 'Loading...';
}
async function onRename( event ) {
event.preventDefault();
try {
await page.save();
createSuccessNotice( __( 'Page renamed.' ), {
type: 'snackbar',
} );
} catch ( error ) {
createErrorNotice( error.message, { type: 'snackbar' } );
}
}
return (
<form onSubmit={ onRename }>
<TextControl
label={ __( 'Name' ) }
value={ page.editedRecord.title }
onChange={ setTitle }
/>
<button type="submit">{ __( 'Save' ) }</button>
</form>
);
}
// Rendered in the application:
// <PageRenameForm id={ 1 } />
上記の例では、ページタイトルの更新と保存は、edit()
とsave()
のミューテーションヘルパーを使用して処理されます。
パラメータ
- kind
string
: エンティティの種類、例:root
またはpostType
。利用可能な種類のリストについては、../entities.tsのrootEntitiesConfigを参照してください。 - name
string
: エンティティの名前、例:plugin
またはpost
。利用可能な名前のリストについては、../entities.tsのrootEntitiesConfigを参照してください。 - recordId
string | number
: リクエストされたエンティティレコードのID。 - options
Options
: オプションのフックオプション。
戻り値
EntityRecordResolution< RecordType >
: エンティティレコードデータ。
変更履歴
useEntityRecords
指定されたエンティティレコードを解決します。
使用法
import { useEntityRecords } from '@wordpress/core-data';
function PageTitlesList() {
const { records, isResolving } = useEntityRecords( 'postType', 'page' );
if ( isResolving ) {
return 'Loading...';
}
return (
<ul>
{ records.map( ( page ) => (
<li>{ page.title }</li>
) ) }
</ul>
);
}
// Rendered in the application:
// <PageTitlesList />
上記の例では、PageTitlesList
がアプリケーションにレンダリングされると、レコードのリストと解決の詳細がgetEntityRecords()
を使用してストアの状態から取得されるか、欠落している場合は解決されます。
パラメータ
- kind
string
: エンティティの種類、例:root
またはpostType
。利用可能な種類のリストについては、../entities.tsのrootEntitiesConfigを参照してください。 - name
string
: エンティティの名前、例:plugin
またはpost
。利用可能な名前のリストについては、../entities.tsのrootEntitiesConfigを参照してください。 - queryArgs
Record< string, unknown >
: データを取得する方法に関するオプションのHTTPクエリ記述で、リクエストされたAPIエンドポイントに渡されます。 - options
Options
: オプションのフックオプション。
戻り値
EntityRecordsResolution< RecordType >
: エンティティレコードデータ。
変更履歴
useResourcePermissions
リソースの権限を解決します。
使用法
import { useResourcePermissions } from '@wordpress/core-data';
function PagesList() {
const { canCreate, isResolving } = useResourcePermissions( {
kind: 'postType',
name: 'page',
} );
if ( isResolving ) {
return 'Loading ...';
}
return (
<div>
{ canCreate ? <button>+ Create a new page</button> : false }
// ...
</div>
);
}
// Rendered in the application:
// <PagesList />
import { useResourcePermissions } from '@wordpress/core-data';
function Page( { pageId } ) {
const { canCreate, canUpdate, canDelete, isResolving } =
useResourcePermissions( {
kind: 'postType',
name: 'page',
id: pageId,
} );
if ( isResolving ) {
return 'Loading ...';
}
return (
<div>
{ canCreate ? <button>+ Create a new page</button> : false }
{ canUpdate ? <button>Edit page</button> : false }
{ canDelete ? <button>Delete page</button> : false }
// ...
</div>
);
}
// Rendered in the application:
// <Page pageId={ 15 } />
上記の例では、PagesList
がアプリケーションにレンダリングされると、適切な権限と解決の詳細がcanUser()
を使用してストアの状態から取得されるか、欠落している場合は解決されます。
パラメータ
- resource
string | EntityResource
: チェックするエンティティリソース。エンティティオブジェクト{ kind: 'root', name: 'media', id: 1 }
またはRESTベースを文字列として受け入れます –media
。 - id
IdType
: チェックするリソースのオプションID、例: 10。注意: この引数は、権限をチェックするためのリソースとしてエンティティオブジェクトを使用する場合は推奨されず、無視されます。
戻り値
ResourcePermissionsResolution< IdType >
: エンティティレコードデータ。
変更履歴
6.1.0
WordPress コアに導入されました。
このパッケージへの貢献
これはグーテンベルクプロジェクトの一部である個別のパッケージです。このプロジェクトはモノレポとして整理されています。特定の目的を持つ複数の自己完結型ソフトウェアパッケージで構成されています。このモノレポ内のパッケージはnpmに公開され、WordPressや他のソフトウェアプロジェクトで使用されています。
このパッケージやグーテンベルク全体への貢献について詳しく知りたい場合は、プロジェクトの主な貢献者ガイドをお読みください。