WordPress.org

Make WordPress Core

Ticket #11683: 11683.diff

File 11683.diff, 1.9 KB (added by wonderboymusic, 8 years ago)
  • wp-includes/meta.php

     
    132132                }
    133133        }
    134134
    135         if ( ! $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ) )
    136                 return add_metadata($meta_type, $object_id, $meta_key, $passed_value);
     135        $_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) );
    137136
     137        if ( empty( $_meta_ids ) )
     138                return add_metadata( $meta_type, $object_id, $meta_key, $passed_value );
     139
    138140        $_meta_value = $meta_value;
    139141        $meta_value = maybe_serialize( $meta_value );
    140142
     
    146148                $where['meta_value'] = $prev_value;
    147149        }
    148150
    149         do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
     151        foreach ( $_meta_ids as $_meta_id )
     152                do_action( "update_{$meta_type}_meta", $_meta_id, $object_id, $meta_key, $_meta_value );
    150153
    151         if ( 'post' == $meta_type )
    152                 do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value );
     154        if ( 'post' == $meta_type ) {
     155                foreach ( $_meta_ids as $_meta_id )
     156                        do_action( 'update_postmeta', $_meta_id, $object_id, $meta_key, $meta_value );
     157        }
    153158
    154159        $wpdb->update( $table, $data, $where );
    155160
    156161        wp_cache_delete($object_id, $meta_type . '_meta');
    157162
    158         do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
     163        foreach ( $_meta_ids as $_meta_id )
     164                do_action( "updated_{$meta_type}_meta", $_meta_id, $object_id, $meta_key, $_meta_value );
    159165
    160         if ( 'post' == $meta_type )
    161                 do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value );
     166        if ( 'post' == $meta_type ) {
     167                foreach ( $_meta_ids as $_meta_id )
     168                        do_action( 'updated_postmeta', $_meta_id, $object_id, $meta_key, $meta_value );
     169        }
    162170
    163171        return true;
    164172}