From f7e5db2645d9c8f0d5d5c52a5a677e5ca3301169 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Mon, 5 Oct 2009 01:08:06 +0000 Subject: [PATCH] Fix delete_metadata(), see #2659 git-svn-id: https://develop.svn.wordpress.org/trunk@11996 602fd350-edb4-49c9-b593-d223f7449a82 --- wp-includes/meta.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/wp-includes/meta.php b/wp-includes/meta.php index 07ab75533f..330f7d45cd 100644 --- a/wp-includes/meta.php +++ b/wp-includes/meta.php @@ -80,8 +80,8 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v return true; } -function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '') { - if ( !$meta_type || !$meta_key ) +function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '', $delete_all = false) { + if ( !$meta_type || !$meta_key || (!$delete_all && ! (int)$object_id) ) return false; if ( ! $table = _get_meta_table($meta_type) ) @@ -89,16 +89,17 @@ function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '') { global $wpdb; - $column = esc_sql($meta_type . '_id'); - // expected_slashed ($meta_key) $meta_key = stripslashes($meta_key); $meta_value = maybe_serialize( stripslashes_deep($meta_value) ); $query = $wpdb->prepare( "SELECT meta_id FROM $table WHERE meta_key = %s", $meta_key ); + if ( !$delete_all ) + $query .= $wpdb->prepare(" AND %s = %d", $meta_type . '_id', $object_id ); + if ( $meta_value ) - $query .= $wpdb->prepare("AND meta_value = %s", $meta_value ); + $query .= $wpdb->prepare(" AND meta_value = %s", $meta_value ); $meta_ids = $wpdb->get_col( $query ); if ( !count( $meta_ids ) )