X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/03f2fa83c13c1b532284205fa7efcab9b8b2c41f..784f914b1e4b1c62d6657e86397c2e83bcee4295:/wp-includes/meta.php diff --git a/wp-includes/meta.php b/wp-includes/meta.php index 2a5f45fd..bfdd5956 100644 --- a/wp-includes/meta.php +++ b/wp-includes/meta.php @@ -161,6 +161,7 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v $id_column = 'user' == $meta_type ? 'umeta_id' : 'meta_id'; // expected_slashed ($meta_key) + $raw_meta_key = $meta_key; $meta_key = wp_unslash($meta_key); $passed_value = $meta_value; $meta_value = wp_unslash($meta_value); @@ -198,7 +199,7 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ); if ( empty( $meta_ids ) ) { - return add_metadata($meta_type, $object_id, $meta_key, $passed_value); + return add_metadata( $meta_type, $object_id, $raw_meta_key, $passed_value ); } $_meta_value = $meta_value; @@ -227,10 +228,8 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v * @param mixed $meta_value Meta value. */ do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); - } - if ( 'post' == $meta_type ) { - foreach ( $meta_ids as $meta_id ) { + if ( 'post' == $meta_type ) { /** * Fires immediately before updating a post's metadata. * @@ -266,10 +265,8 @@ function update_metadata($meta_type, $object_id, $meta_key, $meta_value, $prev_v * @param mixed $meta_value Meta value. */ do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); - } - if ( 'post' == $meta_type ) { - foreach ( $meta_ids as $meta_id ) { + if ( 'post' == $meta_type ) { /** * Fires immediately after updating a post's metadata. * @@ -366,8 +363,14 @@ function delete_metadata($meta_type, $object_id, $meta_key, $meta_value = '', $d if ( !count( $meta_ids ) ) return false; - if ( $delete_all ) - $object_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $type_column FROM $table WHERE meta_key = %s", $meta_key ) ); + if ( $delete_all ) { + $value_clause = ''; + if ( '' !== $meta_value && null !== $meta_value && false !== $meta_value ) { + $value_clause = $wpdb->prepare( " AND meta_value = %s", $meta_value ); + } + + $object_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $type_column FROM $table WHERE meta_key = %s $value_clause", $meta_key ) ); + } /** * Fires immediately before deleting metadata of a specific type. @@ -848,6 +851,23 @@ function update_meta_cache($meta_type, $object_ids) { return $cache; } +/** + * Retrieves the queue for lazy-loading metadata. + * + * @since 4.5.0 + * + * @return WP_Metadata_Lazyloader $lazyloader Metadata lazyloader queue. + */ +function wp_metadata_lazyloader() { + static $wp_metadata_lazyloader; + + if ( null === $wp_metadata_lazyloader ) { + $wp_metadata_lazyloader = new WP_Metadata_Lazyloader(); + } + + return $wp_metadata_lazyloader; +} + /** * Given a meta query, generates SQL clauses to be appended to a main query. *