インストール

モジュールをインストールします

  1. npm install @wordpress/core-data --save

このパッケージは、あなたのコードがES2015+環境で実行されることを前提としています。もし、言語機能やAPIのサポートが限られているか、全くない環境を使用している場合は、コードに@wordpress/babel-preset-defaultに同梱されているポリフィルを含める必要があります。

以下は、著者のリストを単純にレンダリングするコンポーネントの例です:

  1. const { useSelect } = wp.data;
  2. function MyAuthorsListBase() {
  3. const authors = useSelect( ( select ) => {
  4. return select( 'core' ).getUsers( { who: 'authors' } );
  5. }, [] );
  6. if ( ! authors ) {
  7. return null;
  8. }
  9. return (
  10. <ul>
  11. { authors.map( ( author ) => (
  12. <li key={ author.id }>{ author.name }</li>
  13. ) ) }
  14. </ul>
  15. );
  16. }

エンティティとは何ですか?

エンティティはデータソースを表します。エンティティ内の各アイテムはエンティティレコードと呼ばれます。利用可能なエンティティは、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レスポンスを複数のエンティティレコードに変換することを目指しています。レスポンスは異なる形状で来ることがあり、それぞれ異なる方法で処理されます。

単一のオブジェクトを表すレスポンスは、単一のエンティティレコードにマッピングされます。例えば:

  1. {
  2. "title": "...",
  3. "description": "...",
  4. "...": "..."
  5. }

配列として形作られたコレクションを表すレスポンスは、配列の要素数だけエンティティレコードにマッピングされます。例えば:

  1. [
  2. { "id": 1, "name": "...", "...": "..." },
  3. { "id": 2, "name": "...", "...": "..." },
  4. { "id": 3, "name": "...", "...": "..." }
  5. ]

また、レスポンスがオブジェクトとして形作られ、そのキーがプロパティの値の1つであるコレクションを表す場合もあります。ネストされた各オブジェクトは独自のエンティティレコードであるべきです。この場合、単一のオブジェクト/エンティティと混同されないように、エンティティ構成はオブジェクトキーとして機能する値を保持するプロパティキーを提供する必要があります。以下の例では、slugプロパティの値がオブジェクトキーとして機能しているため、エンティティ構成は各ネストされたオブジェクトが個別のエンティティレコードとして処理されるためにkey: 'slug'を宣言する必要があります:

  1. {
  2. "publish": { "slug": "publish", "name": "Published", "...": "..." },
  3. "draft": { "slug": "draft", "name": "Draft", "...": "..." },
  4. "future": { "slug": "future", "name": "Future", "...": "..." }
  5. }

エンティティレコードとの対話

エンティティレコードはユニークです。コレクションであるエンティティの場合、各レコードには管理用の識別子として機能するidプロパティがあると想定されます。エンティティがkeyを定義している場合、そのプロパティは想定されるidの代わりに識別子として使用されます。

name

  • タイプ: string.
  • 例: user.

エンティティの名前。これを使用して、エンティティと対話するユーティリティ(セレクタ、アクション、フック)で使用します。

kind

  • タイプ: string.
  • 例: root.

エンティティはkindによってグループ化できます。これを使用して、エンティティと対話するユーティリティ(セレクタ、アクション、フック)で使用します。

このパッケージは、getEntityRecordsgetEntityRecordなどのプロパティを活用して、エンティティと対話するための一般的なメソッドを提供します:

  1. // Get the record collection for the user entity.
  2. wp.data.select( 'core' ).getEntityRecords( 'root', 'user' );
  3. // Get a single record for the user entity.
  4. wp.data.select( 'core' ).getEntityRecord( 'root', 'user', recordId );

plural

  • タイプ: string.
  • 例: statuses.

一般的なユーティリティ(getEntityRecordsgetEntityRecordなど)に加えて、このパッケージはrootの種類のエンティティレコード(コレクションと単一レコードの両方)と対話するための見栄えの良いメソッドを動的に作成します。一般的なメソッドと見栄えの良いメソッドを以下のように比較します:

  1. // Collection
  2. wp.data.select( 'core' ).getEntityRecords( 'root', 'user' );
  3. wp.data.select( 'core' ).getUsers();
  4. // Single record
  5. wp.data.select( 'core' ).getEntityRecord( 'root', 'user', recordId );
  6. wp.data.select( 'core' ).getUser( recordId );

時には、エンティティの複数形が通常ではない場合があります(-sサフィックスを追加することで形成されない)。エンティティ構成のpluralプロパティは、エンティティのために作成された動的メソッドの代替の複数形を宣言することを可能にします。例えば、statusエンティティがstatusesの複数形を宣言している場合、次のメソッドが作成されます:

  1. // Collection
  2. wp.data.select( 'core' ).getStatuses();
  3. // Single record
  4. wp.data.select( 'core' ).getStatus( recordId );

アクション

以下のディスパッチアクションクリエーターのセットは、wp.data.dispatch( 'core' )によって返されるオブジェクトで利用可能です:

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

特定のクエリのテンプレートを設定するために使用されるアクションオブジェクトを返します。

パラメータ

  • 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が受信されたことを示すアクションオブジェクトを返します。

パラメータ

  • 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です。

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。

返り値

  • 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

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

投稿の最新のオートセーブを返します。

バックエンドは、各投稿に対して著者ごとに1つのオートセーブを保存するため、複数のオートセーブを返す場合があります。

パラメータ

  • state State: ステートツリー。
  • postType string: 親投稿のタイプ。
  • postId EntityRecordKey: 親投稿のID。

返り値

  • Array< any > | 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< 'edit' >: 現在のユーザーオブジェクト。

getDefaultTemplateId

特定のクエリをレンダリングするために使用されるデフォルトテンプレートを返します。

パラメータ

  • 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: プレビューが取得されていない場合は未定義、そうでない場合は埋め込みプレビューAPIから取得されたプレビュー。

getEntitiesByKind

非推奨 WordPress 6.0以降。代わりにgetEntitiesConfigを使用してください。
指定された種類のロードされたエンティティを返します。

パラメータ

  • state State: データ状態。
  • kind string: エンティティの種類。

返り値

  • Array< any >: 種類に一致する構成を持つエンティティの配列。

getEntitiesConfig

指定された種類のロードされたエンティティを返します。

パラメータ

  • state State: データ状態。
  • kind string: エンティティの種類。

返り値

  • Array< any >: 種類に一致する構成を持つエンティティの配列。

getEntity

非推奨 WordPress 6.0以降。代わりにgetEntityConfigを使用してください。
指定された種類と名前のエンティティ構成を返します。

パラメータ

  • state State: データ状態。
  • kind string: エンティティの種類。
  • name string: エンティティの名前。

返り値

  • any: エンティティ構成

getEntityConfig

指定された種類と名前のエンティティ構成を返します。

パラメータ

  • state State: データ状態。
  • kind string: エンティティの種類。
  • name string: エンティティの名前。

返り値

  • any: エンティティ構成

getEntityRecord

キーによってエンティティのレコードオブジェクトを返します。値がまだ受信されていない場合はnullを返し、値のエンティティが存在しないことが知られている場合は未定義、存在し受信された場合はエンティティオブジェクトを返します。

パラメータ

  • 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。

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

編集された値が変更されたときに新しい参照を返します。これは、戻り値の厳密な等価性を使用して、状態間で編集が行われた場所を推測するのに役立ちます。

使用法

  1. const hasEditOccurred = (
  2. getReferenceByDistinctEdits( beforeState ) !==
  3. getReferenceByDistinctEdits( afterState )
  4. );

パラメータ

  • 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: エンティティレコードに編集があるかどうか。

hasEntityRecords

指定されたパラメータのセットに対してレコードが受信された場合はtrueを返し、そうでない場合はfalseを返します。

パラメータ

  • state State: 状態ツリー
  • kind string: エンティティの種類。
  • name string: エンティティ名。
  • query GetRecordsHttpQuery: オプションの用語クエリ。有効なクエリパラメータについては、リファレンスを参照し、エンティティの種類を選択してください。その後、「リスト [エンティティの種類]」の利用可能な引数を確認してください。

返すもの

  • boolean: エンティティレコードが受信されたかどうか。

hasFetchedAutosaves

自動保存のRESTリクエストが完了した場合はtrueを返します。

パラメータ

  • state State: 状態ツリー。
  • postType string: 親投稿のタイプ。
  • postId EntityRecordKey: 親投稿のID。

返すもの

  • boolean: RESTリクエストが完了した場合はtrue。そうでない場合はfalse。

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へのシンプルなリンクを返すように構成できます。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: エンティティレコードが保存中かどうか。

Hooks

以下のセットのReactフックは、@wordpress/core-dataパッケージからインポート可能です:

useEntityBlockEditor

指定されたタイプの最も近いエンティティのブロックコンテンツのゲッターとセッターを返すフックです。

返り値は[ blocks, onInput, onChange ]の形を持ちます。onInputは、元に戻すレベルを作成せず、投稿を汚さないブロックの変更、すなわち非永続的な変更に使用され、onChangeは永続的な変更に使用されます。これらはBlockEditorProviderのプロパティに直接マッピングされ、BlockEditorProviderや類似のコンポーネントまたはフックと一緒に使用されることを意図しています。

パラメータ

  • kind string: エンティティの種類。
  • name string: エンティティの名前。
  • options Object:
  • options.id [string]: コンテキストで提供されたものの代わりに使用するエンティティID。

戻り値

  • [unknown[], Function, Function]: ブロック配列とセッター。

useEntityId

指定されたタイプの最も近いエンティティのIDを返すフックです。

パラメータ

  • kind string: エンティティの種類。
  • name string: エンティティの名前。

useEntityProp

指定されたタイプの最も近いエンティティの指定されたプロパティの値とセッターを返すフックです。

パラメータ

  • kind string: エンティティの種類。
  • name string: エンティティの名前。
  • prop string: プロパティ名。
  • _id [number|string]: コンテキストで提供されたものの代わりに使用するエンティティID。

戻り値

  • [*, Function, *]: 最初のアイテムがプロパティの値、2番目がセッター、3番目がrawrenderedprotectedプロパティなどの詳細情報を含むREST APIからの完全な値オブジェクトの配列です。

useEntityRecord

指定されたエンティティレコードを解決します。

使用法

  1. import { useEntityRecord } from '@wordpress/core-data';
  2. function PageTitleDisplay( { id } ) {
  3. const { record, isResolving } = useEntityRecord( 'postType', 'page', id );
  4. if ( isResolving ) {
  5. return 'Loading...';
  6. }
  7. return record.title;
  8. }
  9. // Rendered in the application:
  10. // <PageTitleDisplay id={ 1 } />

上記の例では、PageTitleDisplayがアプリケーションにレンダリングされると、ページと解決の詳細がgetEntityRecord()を使用してストアの状態から取得されるか、欠落している場合は解決されます。

  1. import { useCallback } from 'react';
  2. import { useDispatch } from '@wordpress/data';
  3. import { __ } from '@wordpress/i18n';
  4. import { TextControl } from '@wordpress/components';
  5. import { store as noticeStore } from '@wordpress/notices';
  6. import { useEntityRecord } from '@wordpress/core-data';
  7. function PageRenameForm( { id } ) {
  8. const page = useEntityRecord( 'postType', 'page', id );
  9. const { createSuccessNotice, createErrorNotice } =
  10. useDispatch( noticeStore );
  11. const setTitle = useCallback(
  12. ( title ) => {
  13. page.edit( { title } );
  14. },
  15. [ page.edit ]
  16. );
  17. if ( page.isResolving ) {
  18. return 'Loading...';
  19. }
  20. async function onRename( event ) {
  21. event.preventDefault();
  22. try {
  23. await page.save();
  24. createSuccessNotice( __( 'Page renamed.' ), {
  25. type: 'snackbar',
  26. } );
  27. } catch ( error ) {
  28. createErrorNotice( error.message, { type: 'snackbar' } );
  29. }
  30. }
  31. return (
  32. <form onSubmit={ onRename }>
  33. <TextControl
  34. label={ __( 'Name' ) }
  35. value={ page.editedRecord.title }
  36. onChange={ setTitle }
  37. />
  38. <button type="submit">{ __( 'Save' ) }</button>
  39. </form>
  40. );
  41. }
  42. // Rendered in the application:
  43. // <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 >: エンティティレコードデータ。

変更履歴

6.1.0 WordPress コアに導入されました。

useEntityRecords

指定されたエンティティレコードを解決します。

使用法

  1. import { useEntityRecords } from '@wordpress/core-data';
  2. function PageTitlesList() {
  3. const { records, isResolving } = useEntityRecords( 'postType', 'page' );
  4. if ( isResolving ) {
  5. return 'Loading...';
  6. }
  7. return (
  8. <ul>
  9. { records.map( ( page ) => (
  10. <li>{ page.title }</li>
  11. ) ) }
  12. </ul>
  13. );
  14. }
  15. // Rendered in the application:
  16. // <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 >: エンティティレコードデータ。

変更履歴

6.1.0 WordPress コアに導入されました。

useResourcePermissions

リソースの権限を解決します。

使用法

  1. import { useResourcePermissions } from '@wordpress/core-data';
  2. function PagesList() {
  3. const { canCreate, isResolving } = useResourcePermissions( {
  4. kind: 'postType',
  5. name: 'page',
  6. } );
  7. if ( isResolving ) {
  8. return 'Loading ...';
  9. }
  10. return (
  11. <div>
  12. { canCreate ? <button>+ Create a new page</button> : false }
  13. // ...
  14. </div>
  15. );
  16. }
  17. // Rendered in the application:
  18. // <PagesList />
  1. import { useResourcePermissions } from '@wordpress/core-data';
  2. function Page( { pageId } ) {
  3. const { canCreate, canUpdate, canDelete, isResolving } =
  4. useResourcePermissions( {
  5. kind: 'postType',
  6. name: 'page',
  7. id: pageId,
  8. } );
  9. if ( isResolving ) {
  10. return 'Loading ...';
  11. }
  12. return (
  13. <div>
  14. { canCreate ? <button>+ Create a new page</button> : false }
  15. { canUpdate ? <button>Edit page</button> : false }
  16. { canDelete ? <button>Delete page</button> : false }
  17. // ...
  18. </div>
  19. );
  20. }
  21. // Rendered in the application:
  22. // <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や他のソフトウェアプロジェクトで使用されています。

このパッケージやグーテンベルク全体への貢献について詳しく知りたい場合は、プロジェクトの主な貢献者ガイドをお読みください。