Changeset 30140
- Timestamp:
- 11/01/2014 02:38:19 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/meta.php
r30122 r30140 197 197 } 198 198 199 if ( ! $meta_id = $wpdb->get_var( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ) ) 199 $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s AND $column = %d", $meta_key, $object_id ) ); 200 if ( empty( $meta_ids ) ) { 200 201 return add_metadata($meta_type, $object_id, $meta_key, $passed_value); 202 } 201 203 202 204 $_meta_value = $meta_value; … … 224 226 * @param mixed $meta_value Meta value. 225 227 */ 226 do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 227 228 if ( 'post' == $meta_type ) 228 foreach ( $meta_ids as $meta_id ) { 229 do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 230 } 231 232 if ( 'post' == $meta_type ) { 229 233 /** 230 234 * Fires immediately before updating a post's metadata. … … 237 241 * @param mixed $meta_value Meta value. 238 242 */ 239 do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 243 foreach ( $meta_ids as $meta_id ) { 244 do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 245 } 246 } 240 247 241 248 $result = $wpdb->update( $table, $data, $where ); … … 258 265 * @param mixed $meta_value Meta value. 259 266 */ 260 do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 267 foreach ( $meta_ids as $meta_id ) { 268 do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 269 } 261 270 262 271 if ( 'post' == $meta_type ) { … … 271 280 * @param mixed $meta_value Meta value. 272 281 */ 273 do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 282 foreach ( $meta_ids as $meta_id ) { 283 do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 284 } 274 285 } 275 286 -
trunk/tests/phpunit/tests/meta.php
r30115 r30140 5 5 */ 6 6 class Tests_Meta extends WP_UnitTestCase { 7 protected $updated_mids = array(); 8 7 9 function setUp() { 8 10 parent::setUp(); … … 75 77 $second = get_user_meta( $meta->user_id, $meta->meta_key ); 76 78 $this->assertFalse( $first === $second ); 79 } 80 81 /** 82 * @ticket 11683 83 */ 84 public function test_update_metadata_hooks_for_multiple_updated_rows() { 85 add_metadata( 'post', 1, 'test_key', 'value_1' ); 86 add_metadata( 'post', 1, 'test_key', 'value_2' ); 87 add_action( 'update_post_meta', array( $this, 'updated_meta' ) ); 88 add_action( 'update_postmeta', array( $this, 'updated_meta' ) ); 89 add_action( 'updated_post_meta', array( $this, 'updated_meta' ) ); 90 add_action( 'updated_postmeta', array( $this, 'updated_meta' ) ); 91 92 update_metadata( 'post', 1, 'test_key', 'value_3' ); 93 94 remove_action( 'update_post_meta', array( $this, 'updated_meta' ) ); 95 remove_action( 'update_postmeta', array( $this, 'updated_meta' ) ); 96 remove_action( 'updated_post_meta', array( $this, 'updated_meta' ) ); 97 remove_action( 'updated_postmeta', array( $this, 'updated_meta' ) ); 98 99 $found = $this->updated_mids; 100 $this->updated_mids = array(); 101 102 foreach ( $found as $action => $mids ) { 103 $this->assertSame( 2, count( $mids ) ); 104 } 77 105 } 78 106 … … 301 329 $this->assertSame( array( $data ), $found['foo'] ); 302 330 } 331 332 /** Helpers **********************************************************/ 333 334 public function updated_meta( $meta_id ) { 335 $this->updated_mids[ current_action() ][] = $meta_id; 336 } 303 337 }
Note: See TracChangeset
for help on using the changeset viewer.