
Product
Redesigned Repositories Page: A Faster Way to Prioritize Security Risk
Our redesigned Repositories page adds alert severity, filtering, and tabs for faster triage and clearer insights across all your projects.
This package provides well-documented TypeScript definitions that describe the shape of:
WP_Post
, WP_Term
, and WP_User
/wp/v2/posts
and /wp/v2/users
The definitions were last updated for WordPress 6.7.
WP_Post
WP_Term
WP_User
WP_Comment
WP_Error
WP_Query
WP_Block
WP_Block_Type
WP_Block_Template
WP_Site
WP_Locale
WP_Taxonomy
WP_Post_Type
WP_Role
WP_Network
WP_Screen
Route | Schema |
---|---|
/wp/v2/block-directory/search | WP_REST_API_Block_Directory_Items |
/wp/v2/block-patterns/categories | WP_REST_API_Block_Pattern_Categories |
/wp/v2/block-patterns/patterns | WP_REST_API_Block_Patterns |
/wp/v2/block-renderer/{name} | WP_REST_API_Rendered_Block |
/wp/v2/block-types | WP_REST_API_Block_Types |
/wp/v2/block-types/{namespace} | WP_REST_API_Block_Type |
/wp/v2/block-types/{namespace}/{name} | WP_REST_API_Block_Type |
/wp/v2/blocks | WP_REST_API_Blocks |
/wp/v2/blocks/{id} | WP_REST_API_Block |
/wp/v2/blocks/{id}/autosaves | Todo |
/wp/v2/blocks/{parent}/autosaves/{id} | Todo |
/wp/v2/blocks/{parent}/revisions | WP_REST_API_Revisions |
/wp/v2/blocks/{parent}/revisions/{id} | WP_REST_API_Revision |
/wp/v2/categories | WP_REST_API_Categories |
/wp/v2/categories/{id} | WP_REST_API_Category |
/wp/v2/comments | WP_REST_API_Comments |
/wp/v2/comments/{id} | WP_REST_API_Comment |
/wp/v2/font-collections | WP_REST_API_Font_Collections |
/wp/v2/font-collections/{slug} | WP_REST_API_Font_Collection |
/wp/v2/font-families | WP_REST_API_Font_Families |
/wp/v2/font-families/{id}/ | WP_REST_API_Font_Family |
/wp/v2/font-families/{parent}/font-faces | WP_REST_API_Font_Faces |
/wp/v2/font-families/{parent}/font-faces/{id} | WP_REST_API_Font_Face |
/wp/v2/global-styles/{id} | WP_REST_API_Global_Style_Variation |
/wp/v2/global-styles/{parent}/revisions | Todo |
/wp/v2/global-styles/{parent}/revisions/{id} | Todo |
/wp/v2/global-styles/themes/{stylesheet} | WP_REST_API_Global_Style_Config |
/wp/v2/global-styles/themes/{stylesheet}/variations | WP_REST_API_Global_Style_Variations |
/wp/v2/media | WP_REST_API_Attachments |
/wp/v2/media/{id} | WP_REST_API_Attachment |
/wp/v2/media/{id}/edit | Todo |
/wp/v2/media/{id}/post-process | Todo |
/wp/v2/menu-items | WP_REST_API_Menu_Items |
/wp/v2/menu-items/{id} | WP_REST_API_Menu_Item |
/wp/v2/menu-items/{id}/autosaves | Todo |
/wp/v2/menu-items/{parent}/autosaves/{id} | Todo |
/wp/v2/menu-locations | WP_REST_API_Menu_Locations |
/wp/v2/menu-locations/{location} | WP_REST_API_Menu_Location |
/wp/v2/menus | WP_REST_API_Menus |
/wp/v2/menus/{id} | WP_REST_API_Menu |
/wp/v2/navigation | WP_REST_API_Navigation_Menus |
/wp/v2/navigation/{id} | WP_REST_API_Navigation_Menu |
/wp/v2/navigation/{id}/autosaves | Todo |
/wp/v2/navigation/{parent}/autosaves/{id} | Todo |
/wp/v2/navigation/{parent}/revisions | Todo |
/wp/v2/navigation/{parent}/revisions/{id} | Todo |
/wp/v2/pages | WP_REST_API_Pages |
/wp/v2/pages/{id} | WP_REST_API_Page |
/wp/v2/pages/{id}/autosaves | Todo |
/wp/v2/pages/{parent}/autosaves/{id} | Todo |
/wp/v2/pages/{parent}/revisions | WP_REST_API_Revisions |
/wp/v2/pages/{parent}/revisions/{id} | WP_REST_API_Revision |
/wp/v2/pattern-directory/patterns | WP_REST_API_Pattern_Directory_Patterns |
/wp/v2/plugins | WP_REST_API_Plugins |
/wp/v2/plugins/{plugin} | WP_REST_API_Plugin |
/wp/v2/posts | WP_REST_API_Posts |
/wp/v2/posts/{id} | WP_REST_API_Post |
/wp/v2/posts/{id}/autosaves | Todo |
/wp/v2/posts/{parent}/autosaves/{id} | Todo |
/wp/v2/posts/{parent}/revisions | WP_REST_API_Revisions |
/wp/v2/posts/{parent}/revisions/{id} | WP_REST_API_Revision |
/wp/v2/search | WP_REST_API_Search_Results |
/wp/v2/settings | WP_REST_API_Settings |
/wp/v2/sidebars | Todo |
/wp/v2/sidebars/{id} | Todo |
/wp/v2/statuses | WP_REST_API_Statuses |
/wp/v2/statuses/{status} | WP_REST_API_Status |
/wp/v2/tags | WP_REST_API_Tags |
/wp/v2/tags/{id} | WP_REST_API_Tag |
/wp/v2/taxonomies | WP_REST_API_Taxonomies |
/wp/v2/taxonomies/{taxonomy} | WP_REST_API_Taxonomy |
/wp/v2/template-parts | Todo |
/wp/v2/template-parts/{id} | Todo |
/wp/v2/template-parts/{id}/autosaves | Todo |
/wp/v2/template-parts/{parent}/autosaves/{id} | Todo |
/wp/v2/template-parts/{parent}/revisions | Todo |
/wp/v2/template-parts/{parent}/revisions/{id} | Todo |
/wp/v2/template-parts/lookup | Todo |
/wp/v2/templates | Todo |
/wp/v2/templates/{id} | Todo |
/wp/v2/templates/{id}/autosaves | Todo |
/wp/v2/templates/{parent}/autosaves/{id} | Todo |
/wp/v2/templates/{parent}/revisions | Todo |
/wp/v2/templates/{parent}/revisions/{id} | Todo |
/wp/v2/templates/lookup | Todo |
/wp/v2/themes | Todo |
/wp/v2/themes/{stylesheet} | Todo |
/wp/v2/types | WP_REST_API_Types |
/wp/v2/types/{type} | WP_REST_API_Type |
/wp/v2/users | WP_REST_API_Users |
/wp/v2/users/({id}|me) | WP_REST_API_User |
/wp/v2/users/({id}|me)/application-passwords | WP_REST_API_Application_Passwords |
/wp/v2/users/({id}|me)/application-passwords/{uuid} | WP_REST_API_Application_Password |
/wp/v2/users/({id}|me)/application-passwords/introspect | WP_REST_API_Application_Password |
/wp/v2/widget-types | Todo |
/wp/v2/widget-types/{id} | Todo |
/wp/v2/widget-types/{id}/encode | Todo |
/wp/v2/widget-types/{id}/render | Todo |
/wp/v2/widgets | Todo |
/wp/v2/widgets/{id} | Todo |
/wp/v2/wp_pattern_category | Todo |
/wp/v2/wp_pattern_category/{id} | Todo |
Any enveloped REST API response | WP_REST_API_Envelope<T> |
Any REST API error | WP_REST_API_Error |
Interfaces are used for the structure of several properties:
WP_Error_Data
WP_Error_Messages
WP_Post_Type_Caps
WP_Post_Type_Labels
WP_Post_Type_Rewrite
WP_Taxonomy_Caps
WP_Taxonomy_Labels
WP_Taxonomy_Rewrite
WP_User_Cap_Name
WP_User_Caps
WP_User_Data
String enums are used for values of several properties:
WP_Comment_Status_Name
WP_Comment_Type_Name
WP_HTTP_Status_Code
WP_Post_Comment_Status_Name
WP_Post_Format_Name
WP_Post_Status_Name
WP_Post_Type_Name
WP_Taxonomy_Name
WP_User_Role_Name
npm install wp-types --save-dev
This package is versioned so that you can specify both the schema version and the WordPress branch version in a way that's compatible with semantic versioning. Given version x.y.z
:
x
) indicates the schema version number, currently 4
y
) indicates the WordPress branch version number without its decimal place, eg. 67
for WordPress 6.7z
) indicates the schema patch version numberExamples:
^4.0.0
- Schema version 4 for the latest WordPress version~4.67.0
- Schema version 4 for WordPress 6.7~3.57.0
- Schema version 3 for WordPress 5.7Usage with objects from PHP represented as JSON:
import type { WP_Post } from 'wp-types';
function get_title( post: WP_Post ): string {
return post.post_title;
}
Usage with the REST API, for example when using apiFetch()
:
import type {
WP_REST_API_Posts,
WP_REST_API_Users,
WP_REST_API_Attachments,
WP_REST_API_Tags,
WP_REST_API_Envelope,
WP_REST_API_Error,
} from 'wp-types';
// Posts, Pages, and custom post types:
const api: Promise<WP_REST_API_Posts> = wp.apiFetch( {
path: '/wp/v2/posts/',
} );
// Users:
const api: Promise<WP_REST_API_Users> = wp.apiFetch( {
path: '/wp/v2/users/',
} );
// Media attachments:
const api: Promise<WP_REST_API_Attachments> = wp.apiFetch( {
path: '/wp/v2/media/',
} );
// Enveloped responses (with `?_envelope`):
const api: Promise<WP_REST_API_Envelope<WP_REST_API_Tags>> = wp.apiFetch( {
path: '/wp/v2/tags/?_envelope',
} );
// Errors from any of the above:
api.catch( ( error: WP_REST_API_Error ) => {
alert( error.message );
} );
Usage with entity records:
import type {
WP_REST_API_Category,
WP_REST_API_Posts,
WP_REST_API_Term,
} from 'wp-types';
const category = getEntityRecord<WP_REST_API_Category>(
'taxonomy',
'category',
id,
);
const term = getEntityRecord<WP_REST_API_Term>(
'taxonomy',
taxonomy,
id,
);
const posts = getEntityRecords<WP_REST_API_Posts>(
'postType',
'post',
query,
);
The PHP object schemas apply whenever a supported PHP object is encoded to JSON. For example:
printf(
'let wpPost = %s;',
wp_json_encode( get_post() )
);
The REST API object schemas apply to the response to a REST API request or entity record request. Examples:
const api = wp.apiFetch( {
path: '/wp/v2/categories/'
} );
const category = getEntityRecord(
'taxonomy',
'category',
id,
);
const posts = getEntityRecords(
'postType',
'post',
query
);
The definitions also apply outside of the browser, for example if you're saving data as JSON and reading it in a Node application.
They're generated directly from the wp-json-schemas
package, which is itself tested using output from WordPress core.
If you'd like to contribute to these definitions, please contribute upstream to the wp-json-schemas
package. Thanks!
Yes, but:
type
Example:
import { WP_Post_Type_Name } from 'wp-types';
console.log( WP_Post_Type_Name.auto_draft );
Example using apifetch()
:
import type { WP_REST_API_Posts } from 'wp-types';
import { WP_Post_Status_Name } from 'wp-types';
const api: Promise<WP_REST_API_Posts> = wp.apiFetch( {
path: '/wp/v2/posts/',
queryParams: {
status: WP_Post_Status_Name.publish
}
} );
@wordpress/core-data
?The @wordpress/core-data
package includes TypeScript definitions for some WordPress data types. These packages don't "compete", they can be complimentary, and there are advantages and disadvantages to using one over the other depending on your use case.
wp-types
wp-types
contains definitions for all WordPress REST API endpoints and data types, whereas @wordpress/core-data
includes only the data types used by the core data storewp-types
is automatically tested against each new version of WordPress, whereas @wordpress/core-data
is not and the can get out of date@wordpress/core-data
is a full data store implementation library, not just the type definitions@wordpress/core-data
@wordpress/core-data
includes separate type definitions for the view
, edit
, and embed
contexts, whereas wp-types
includes only the combined view
and edit
contexts (although this will hopefully change in the future)@wordpress/core-data
includes separate type definitions for the different data structure that needs to be sent to some endpoints for POST and PUT requests, whereas wp-types
does not (although this will also hopefully change in the future)@wordpress/core-data
API in a TypeScript project and you don't need type definitions for anything beyond the core data store, then there is no need to use wp-types
MIT
FAQs
TypeScript definitions of WordPress PHP objects and REST API responses.
The npm package wp-types receives a total of 13,704 weekly downloads. As such, wp-types popularity was classified as popular.
We found that wp-types demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Our redesigned Repositories page adds alert severity, filtering, and tabs for faster triage and clearer insights across all your projects.
Security News
Multiple deserialization flaws in PyTorch Lightning could allow remote code execution when loading untrusted model files, affecting versions up to 2.4.0.
Security News
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.