The register_rest_field() WordPress PHP function registers a new field on an existing WordPress object type, such as “post”, “term”, or “comment”.
Usage
register_rest_field( $object_type, $attribute, $args );
Parameters
- $object_type (string|array) – Required. Object(s) the field is being registered to, “post”, “term”, “comment”, etc.
- $attribute (string) – Required. The attribute name.
- $args (array) – Optional. An array of arguments used to handle the registered field, which includes:
- get_callback (callable|null) – Optional. The callback function used to retrieve the field value. Default is ‘null’, the field will not be returned in the response.
- update_callback (callable|null) – Optional. The callback function used to set and update the field value. Default is ‘null’, the value cannot be set or updated.
- schema (array|null) – Optional. The schema for this field. Default is ‘null’, no schema entry will be returned.
More information
See WordPress Developer Resources: register_rest_field()
Examples
Register a field to a post
This code snippet registers a field called ‘my_field’ to a post object:
add_action( 'rest_api_init', function () { $field = 'my_field'; register_rest_field( 'post', $field, array( 'get_callback' => function ( $object ) use ( $field ) { return get_post_meta( $object['id'], $field, true ); }, 'update_callback' => function ( $value, $object ) use ( $field ) { update_post_meta( $object->ID, $field, $value ); }, 'schema' => array( 'type' => 'string', 'arg_options' => array( 'sanitize_callback' => function ( $value ) { return sanitize_text_field( $value ); }, 'validate_callback' => function ( $value ) { return (bool) preg_match( '/\\A[a-z]{10}\\Z/', $value ); }, ), ), ) ); } );
Register a field to a term
This code snippet registers a field called ‘my_term_field’ to a term object:
add_action( 'rest_api_init', function () { $field = 'my_term_field'; register_rest_field( 'term', $field, array( 'get_callback' => function ( $object ) use ( $field ) { return get_term_meta( $object['id'], $field, true ); }, 'update_callback' => function ( $value, $object ) use ( $field ) { update_term_meta( $object->term_id, $field, $value ); }, 'schema' => array( 'type' => 'string', ), ) ); } );