register_rest_field

The timeline below displays how wordpress function register_rest_field has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.9

/**
 * Registers a new field on an existing WordPress object type.
 *
 * @since 4.7.0
 *
 * @global array $wp_rest_additional_fields Holds registered fields, organized
 *                                          by object type.
 *
 * @param string|array $object_type Object(s) the field is being registered to,
 *                                  "post"|"term"|"comment" etc.
 * @param string       $attribute   The attribute name.
 * @param array        $args {
 *     Optional. An array of arguments used to handle the registered field.
 *
 *     @type callable|null $get_callback    Optional. The callback function used to retrieve the field value. Default is
 *                                          'null', the field will not be returned in the response. The function will
 *                                          be passed the prepared object data.
 *     @type callable|null $update_callback Optional. The callback function used to set and update the field value. Default
 *                                          is 'null', the value cannot be set or updated. The function will be passed
 *                                          the model object, like WP_Post.
 *     @type array|null $schema             Optional. The schema for this field.
 *                                          Default is 'null', no schema entry will be returned.
 * }
 */
function register_rest_field($object_type, $attribute, $args = array())
{
    global $wp_rest_additional_fields;
    $defaults = array('get_callback' => null, 'update_callback' => null, 'schema' => null);
    $args = wp_parse_args($args, $defaults);
    $object_types = (array) $object_type;
    foreach ($object_types as $object_type) {
        $wp_rest_additional_fields[$object_type][$attribute] = $args;
    }
}

WordPress Version: 5.6

/**
 * Registers a new field on an existing WordPress object type.
 *
 * @since 4.7.0
 *
 * @global array $wp_rest_additional_fields Holds registered fields, organized
 *                                          by object type.
 *
 * @param string|array $object_type Object(s) the field is being registered
 *                                  to, "post"|"term"|"comment" etc.
 * @param string       $attribute   The attribute name.
 * @param array        $args {
 *     Optional. An array of arguments used to handle the registered field.
 *
 *     @type callable|null $get_callback    Optional. The callback function used to retrieve the field value. Default is
 *                                          'null', the field will not be returned in the response. The function will
 *                                          be passed the prepared object data.
 *     @type callable|null $update_callback Optional. The callback function used to set and update the field value. Default
 *                                          is 'null', the value cannot be set or updated. The function will be passed
 *                                          the model object, like WP_Post.
 *     @type array|null $schema             Optional. The schema for this field.
 *                                          Default is 'null', no schema entry will be returned.
 * }
 */
function register_rest_field($object_type, $attribute, $args = array())
{
    $defaults = array('get_callback' => null, 'update_callback' => null, 'schema' => null);
    $args = wp_parse_args($args, $defaults);
    global $wp_rest_additional_fields;
    $object_types = (array) $object_type;
    foreach ($object_types as $object_type) {
        $wp_rest_additional_fields[$object_type][$attribute] = $args;
    }
}

WordPress Version: 5.5

/**
 * Registers a new field on an existing WordPress object type.
 *
 * @since 4.7.0
 *
 * @global array $wp_rest_additional_fields Holds registered fields, organized
 *                                          by object type.
 *
 * @param string|array $object_type Object(s) the field is being registered
 *                                  to, "post"|"term"|"comment" etc.
 * @param string       $attribute   The attribute name.
 * @param array        $args {
 *     Optional. An array of arguments used to handle the registered field.
 *
 *     @type callable|null $get_callback    Optional. The callback function used to retrieve the field value. Default is
 *                                          'null', the field will not be returned in the response. The function will
 *                                          be passed the prepared object data.
 *     @type callable|null $update_callback Optional. The callback function used to set and update the field value. Default
 *                                          is 'null', the value cannot be set or updated. The function will be passed
 *                                          the model object, like WP_Post.
 *     @type array|null $schema             Optional. The callback function used to create the schema for this field.
 *                                          Default is 'null', no schema entry will be returned.
 * }
 */
function register_rest_field($object_type, $attribute, $args = array())
{
    $defaults = array('get_callback' => null, 'update_callback' => null, 'schema' => null);
    $args = wp_parse_args($args, $defaults);
    global $wp_rest_additional_fields;
    $object_types = (array) $object_type;
    foreach ($object_types as $object_type) {
        $wp_rest_additional_fields[$object_type][$attribute] = $args;
    }
}

WordPress Version: 5.3

/**
 * Registers a new field on an existing WordPress object type.
 *
 * @since 4.7.0
 *
 * @global array $wp_rest_additional_fields Holds registered fields, organized
 *                                          by object type.
 *
 * @param string|array $object_type Object(s) the field is being registered
 *                                  to, "post"|"term"|"comment" etc.
 * @param string $attribute         The attribute name.
 * @param array  $args {
 *     Optional. An array of arguments used to handle the registered field.
 *
 *     @type callable|null $get_callback    Optional. The callback function used to retrieve the field value. Default is
 *                                          'null', the field will not be returned in the response. The function will
 *                                          be passed the prepared object data.
 *     @type callable|null $update_callback Optional. The callback function used to set and update the field value. Default
 *                                          is 'null', the value cannot be set or updated. The function will be passed
 *                                          the model object, like WP_Post.
 *     @type array|null $schema             Optional. The callback function used to create the schema for this field.
 *                                          Default is 'null', no schema entry will be returned.
 * }
 */
function register_rest_field($object_type, $attribute, $args = array())
{
    $defaults = array('get_callback' => null, 'update_callback' => null, 'schema' => null);
    $args = wp_parse_args($args, $defaults);
    global $wp_rest_additional_fields;
    $object_types = (array) $object_type;
    foreach ($object_types as $object_type) {
        $wp_rest_additional_fields[$object_type][$attribute] = $args;
    }
}

WordPress Version: 4.7

/**
 * Registers a new field on an existing WordPress object type.
 *
 * @since 4.7.0
 *
 * @global array $wp_rest_additional_fields Holds registered fields, organized
 *                                          by object type.
 *
 * @param string|array $object_type Object(s) the field is being registered
 *                                  to, "post"|"term"|"comment" etc.
 * @param string $attribute         The attribute name.
 * @param array  $args {
 *     Optional. An array of arguments used to handle the registered field.
 *
 *     @type string|array|null $get_callback    Optional. The callback function used to retrieve the field
 *                                              value. Default is 'null', the field will not be returned in
 *                                              the response.
 *     @type string|array|null $update_callback Optional. The callback function used to set and update the
 *                                              field value. Default is 'null', the value cannot be set or
 *                                              updated.
 *     @type string|array|null $schema          Optional. The callback function used to create the schema for
 *                                              this field. Default is 'null', no schema entry will be returned.
 * }
 */
function register_rest_field($object_type, $attribute, $args = array())
{
    $defaults = array('get_callback' => null, 'update_callback' => null, 'schema' => null);
    $args = wp_parse_args($args, $defaults);
    global $wp_rest_additional_fields;
    $object_types = (array) $object_type;
    foreach ($object_types as $object_type) {
        $wp_rest_additional_fields[$object_type][$attribute] = $args;
    }
}