@wordpress/core-data Edit

Core Data is a data module intended to simplify access to and manipulation of core WordPress entities. It registers its own store and provides a number of selectors which resolve data from the WordPress REST API automatically, along with dispatching action creators to manipulate data.

Used in combination with features of the data module such as subscribe or higher-order components, it enables a developer to easily add data into the logic and display of their plugin.

Installation Installation

Install the module

npm install @wordpress/core-data --save

This package assumes that your code will run in an ES2015+ environment. If you’re using an environment that has limited or no support for ES2015+ such as lower versions of IE then using core-js or @babel/polyfill will add support for these methods. Learn more about it in Babel docs.

Top ↑

Example Example

Below is an example of a component which simply renders a list of authors:

const { withSelect } = wp.data;

function MyAuthorsListBase( { authors } ) {
    return (
        <ul>
            { authors.map( ( author ) => (
                <li key={ author.id }>{ author.name }</li>
            ) ) }
        </ul>
    );
}

const MyAuthorsList = withSelect( ( select ) => ( {
    authors: select( 'core' ).getAuthors(),
} ) )( MyAuthorsListBase );

Top ↑

Actions Actions

The following set of dispatching action creators are available on the object returned by wp.data.dispatch( 'core' ):

# addEntities

Returns an action object used in adding new entities.

Parameters

  • entities Array: Entities received.

Returns

  • Object: Action object.

# receiveAutosaves

Returns an action object used in signalling that the autosaves for a
post have been received.

Parameters

  • postId number: The id of the post that is parent to the autosave.
  • autosaves (Array|Object): An array of autosaves or singular autosave object.

Returns

  • Object: Action object.

# receiveCurrentUser

Returns an action used in signalling that the current user has been received.

Parameters

  • currentUser Object: Current user object.

Returns

  • Object: Action object.

# receiveEmbedPreview

Returns an action object used in signalling that the preview data for
a given URl has been received.

Parameters

  • url string: URL to preview the embed for.
  • preview Mixed: Preview data.

Returns

  • Object: Action object.

# receiveEntityRecords

Returns an action object used in signalling that entity records have been received.

Parameters

  • kind string: Kind of the received entity.
  • name string: Name of the received entity.
  • records (Array|Object): Records received.
  • query ?Object: Query Object.
  • invalidateCache ?boolean: Should invalidate query caches

Returns

  • Object: Action object.

# receiveThemeSupports

Returns an action object used in signalling that the index has been received.

Parameters

  • themeSupports Object: Theme support for the current theme.

Returns

  • Object: Action object.

# receiveUploadPermissions

Returns an action object used in signalling that Upload permissions have been received.

Parameters

  • hasUploadPermissions boolean: Does the user have permission to upload files?

Returns

  • Object: Action object.

# receiveUserPermission

Returns an action object used in signalling that the current user has
permission to perform an action on a REST resource.

Parameters

  • key string: A key that represents the action and REST resource.
  • isAllowed boolean: Whether or not the user can perform the action.

Returns

  • Object: Action object.

# receiveUserQuery

Returns an action object used in signalling that authors have been received.

Parameters

  • queryID string: Query ID.
  • users (Array|Object): Users received.

Returns

  • Object: Action object.

# saveEntityRecord

Action triggered to save an entity record.

Parameters

  • kind string: Kind of the received entity.
  • name string: Name of the received entity.
  • record Object: Record to be saved.

Returns

  • Object: Updated record.

Top ↑

Selectors Selectors

The following selectors are available on the object returned by wp.data.select( 'core' ):

# canUser

Returns whether the current user can perform the given action on the given
REST resource.

Calling this may trigger an OPTIONS request to the REST API via the
canUser() resolver.

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

Parameters

  • state Object: Data state.
  • action string: Action to check. One of: ‘create’, ‘read’, ‘update’, ‘delete’.
  • resource string: REST resource to check, e.g. ‘media’ or ‘posts’.
  • id [string]: Optional ID of the rest resource to check.

Returns

  • (boolean|undefined): Whether or not the user can perform the action, or undefined if the OPTIONS request is still being made.

# getAuthors

Returns all available authors.

Parameters

  • state Object: Data state.

Returns

  • Array: Authors list.

# getAutosave

Returns the autosave for the post and author.

Parameters

  • state Object: State tree.
  • postType string: The type of the parent post.
  • postId number: The id of the parent post.
  • authorId number: The id of the author.

Returns

  • ?Object: The autosave for the post and author.

# getAutosaves

Returns the latest autosaves for the post.

May return multiple autosaves since the backend stores one autosave per
author for each post.

Parameters

  • state Object: State tree.
  • postType string: The type of the parent post.
  • postId number: The id of the parent post.

Returns

  • ?Array: An array of autosaves for the post, or undefined if there is none.

# getCurrentUser

Returns the current user.

Parameters

  • state Object: Data state.

Returns

  • Object: Current user object.

# getEmbedPreview

Returns the embed preview for the given URL.

Parameters

  • state Object: Data state.
  • url string: Embedded URL.

Returns

  • *: Undefined if the preview has not been fetched, otherwise, the preview fetched from the embed preview API.

# getEntitiesByKind

Returns whether the entities for the give kind are loaded.

Parameters

  • state Object: Data state.
  • kind string: Entity kind.

Returns

  • boolean: Whether the entities are loaded

# getEntity

Returns the entity object given its kind and name.

Parameters

  • state Object: Data state.
  • kind string: Entity kind.
  • name string: Entity name.

Returns

  • Object: Entity

# getEntityRecord

Returns the Entity’s record object by key.

Parameters

  • state Object: State tree
  • kind string: Entity kind.
  • name string: Entity name.
  • key number: Record’s key

Returns

  • ?Object: Record.

# getEntityRecords

Returns the Entity’s records.

Parameters

  • state Object: State tree
  • kind string: Entity kind.
  • name string: Entity name.
  • query ?Object: Optional terms query.

Returns

  • Array: Records.

# getThemeSupports

Return theme supports data in the index.

Parameters

  • state Object: Data state.

Returns

  • *: Index data.

# getUserQueryResults

Returns all the users returned by a query ID.

Parameters

  • state Object: Data state.
  • queryID string: Query ID.

Returns

  • Array: Users list.

# hasFetchedAutosaves

Returns true if the REST request for autosaves has completed.

Parameters

  • state Object: State tree.
  • postType string: The type of the parent post.
  • postId number: The id of the parent post.

Returns

  • boolean: True if the REST request was completed. False otherwise.

# hasUploadPermissions

Deprecated since 5.0. Callers should use the more generic canUser() selector instead of hasUploadPermissions(), e.g. canUser( 'create', 'media' ).

Returns whether the current user can upload media.

Calling this may trigger an OPTIONS request to the REST API via the
canUser() resolver.

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

Parameters

  • state Object: Data state.

Returns

  • boolean: Whether or not the user can upload media. Defaults to true if the OPTIONS request is being made.

# isPreviewEmbedFallback

Determines if the returned preview is an oEmbed link fallback.

WordPress can be configured to return a simple link to a URL if it is not embeddable.
We need to be able to determine if a URL is embeddable or not, based on what we
get back from the oEmbed preview API.

Parameters

  • state Object: Data state.
  • url string: Embedded URL.

Returns

  • booleans: Is the preview for the URL an oEmbed link fallback.

# isRequestingEmbedPreview

Returns true if a request is in progress for embed preview data, or false
otherwise.

Parameters

  • state Object: Data state.
  • url string: URL the preview would be for.

Returns

  • boolean: Whether a request is in progress for an embed preview.

Code is Poetry.