WP_REST_Meta_Fields::update_meta_value( int $object_id, string $meta_key, string $name, mixed $value ): true|WP_Error
- Since
- 4.7.0, 6.7.0
- Source
wp-includes/rest-api/fields/class-wp-rest-meta-fields.php:379
Updates a meta value for an object.
Parameters
$object_idint- Object ID to update.
$meta_keystring- Key for the custom field.
$namestring- Name for the field that is exposed in the REST API.
$valuemixed- Updated value.
Return
true|WP_Error- True if the meta field was updated, WP_Error otherwise.
Uses · 10
- get_metadata_raw()Retrieves raw metadata value for the specified object.
- get_object_subtype()Returns the object subtype for a given object ID of a specific type.
- current_user_can()Returns whether the current user has the specified capability.
- __()Retrieves the translation of $text.
- rest_authorization_required_code()Returns a contextual HTTP error code for authorization failure.
- update_metadata()Updates metadata for the specified object. If no value already exists for the specified object ID and metadata key, the metadata will be added.
- wp_slash()Adds slashes to a string or recursively adds slashes to strings within an array.
- WP_REST_Meta_Fields::get_meta_type()Retrieves the object meta type.
- WP_REST_Meta_Fields::is_meta_value_same_as_stored_value()Checks if the user provided value is equivalent to a stored value for the given meta key.
- WP_Error::__construct()Initializes the error.
Used by · 1
- WP_REST_Meta_Fields::update_value()Updates meta values.
Source
protected function update_meta_value( $object_id, $meta_key, $name, $value ) { $meta_type = $this->get_meta_type(); // Do the exact same check for a duplicate value as in update_metadata() to avoid update_metadata() returning false. $old_value = get_metadata_raw( $meta_type, $object_id, $meta_key ); $subtype = get_object_subtype( $meta_type, $object_id ); if ( is_array( $old_value ) && 1 === count( $old_value ) && $this->is_meta_value_same_as_stored_value( $meta_key, $subtype, $old_value[0], $value ) ) { return true; } if ( ! current_user_can( "edit_{$meta_type}_meta", $object_id, $meta_key ) ) { return new WP_Error( 'rest_cannot_update', /* translators: %s: Custom field key. */ sprintf( __( 'Sorry, you are not allowed to edit the %s custom field.' ), $name ), array( 'key' => $name, 'status' => rest_authorization_required_code(), ) ); } if ( ! update_metadata( $meta_type, $object_id, wp_slash( $meta_key ), wp_slash( $value ) ) ) { return new WP_Error( 'rest_meta_database_error', /* translators: %s: Custom field key. */ sprintf( __( 'Could not update the meta value of %s in database.' ), $meta_key ), array( 'key' => $name, 'status' => WP_Http::INTERNAL_SERVER_ERROR, ) ); } return true; }History
Introduced in 4.7.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
6.7.0
Stores values into DB even if provided registered default value.from the docblock
4.7.0
Introduced.from the docblock
About this page
- Parsed data
- Generated from the wordpress-develop 7.1.0 tag, from
src/wp-includes/rest-api/fields/class-wp-rest-meta-fields.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.