REST API: Prevent database error when deleting meta data.

Add a check to `WP_REST_Meta_Fields::delete_meta_value()` ensuring meta data is set before attempting to delete it from the database. If the data does not exist, the delete is considered successful as the data matches the desired state.

Props BrechtVds, goaroundagain, TimothyBlynJacobs.
Fixes #52787.

Built from https://develop.svn.wordpress.org/trunk@50567


git-svn-id: http://core.svn.wordpress.org/trunk@50180 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Peter Wilson 2021-03-23 23:36:04 +00:00
parent fedd1d2b63
commit c41990398c
2 changed files with 5 additions and 1 deletions

View File

@ -232,6 +232,10 @@ abstract class WP_REST_Meta_Fields {
);
}
if ( null === get_metadata_raw( $meta_type, $object_id, wp_slash( $meta_key ) ) ) {
return true;
}
if ( ! delete_metadata( $meta_type, $object_id, wp_slash( $meta_key ) ) ) {
return new WP_Error(
'rest_meta_database_error',

View File

@ -13,7 +13,7 @@
*
* @global string $wp_version
*/
$wp_version = '5.8-alpha-50566';
$wp_version = '5.8-alpha-50567';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.