On this page
WP_REST_Meta_Fields::update_meta_value( int $object_id, string $meta_key, string $name, mixed $value ): true|WP_Error
Updates a meta value for an object.
Parameters
$object_idint Required-
Object ID to update.
$meta_keystring Required-
Key for the custom field.
$namestring Required-
Name for the field that is exposed in the REST API.
$valuemixed Required-
Updated value.
Return
true|WP_Error True if the meta field was updated, WP_Error otherwise.
Source
File: wp-includes/rest-api/fields/class-wp-rest-meta-fields.php. View all references
protected function update_meta_value( $object_id, $meta_key, $name, $value ) {
$meta_type = $this->get_meta_type();
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(),
)
);
}
// Do the exact same check for a duplicate value as in update_metadata() to avoid update_metadata() returning false.
$old_value = get_metadata( $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 ( ! 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;
}
Related
Uses
| Uses | Description |
|---|---|
| WP_REST_Meta_Fields::is_meta_value_same_as_stored_value() wp-includes/rest-api/fields/class-wp-rest-meta-fields.php | Checks if the user provided value is equivalent to a stored value for the given meta key. |
| get_object_subtype() wp-includes/meta.php | Returns the object subtype for a given object ID of a specific type. |
| WP_REST_Meta_Fields::get_meta_type() wp-includes/rest-api/fields/class-wp-rest-meta-fields.php | Retrieves the object meta type. |
| get_metadata() wp-includes/meta.php | Retrieves the value of a metadata field for the specified object type and ID. |
| update_metadata() wp-includes/meta.php | Updates metadata for the specified object. If no value already exists for the specified object ID and metadata key, the metadata will be added. |
| rest_authorization_required_code() wp-includes/rest-api.php | Returns a contextual HTTP error code for authorization failure. |
| current_user_can() wp-includes/capabilities.php | Returns whether the current user has the specified capability. |
| __() wp-includes/l10n.php | Retrieves the translation of $text. |
| wp_slash() wp-includes/formatting.php | Adds slashes to a string or recursively adds slashes to strings within an array. |
| WP_Error::__construct() wp-includes/class-wp-error.php | Initializes the error. |
Used By
| Used By | Description |
|---|---|
| WP_REST_Meta_Fields::update_value() wp-includes/rest-api/fields/class-wp-rest-meta-fields.php | Updates meta values. |
Changelog
| Version | Description |
|---|---|
| 4.7.0 | Introduced. |
© 2003–2022 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/wp_rest_meta_fields/update_meta_value