Ticket #18196: 18196.2.diff
File 18196.2.diff, 6.5 KB (added by , 13 years ago) |
---|
-
wp-includes/post.php
1497 1497 * @return bool Whether the post meta key was deleted from the database 1498 1498 */ 1499 1499 function delete_post_meta_by_key($post_meta_key) { 1500 if ( !$post_meta_key ) 1501 return false; 1502 1503 global $wpdb; 1504 $post_ids = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key)); 1505 if ( $post_ids ) { 1506 $postmetaids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = %s", $post_meta_key ) ); 1507 $in = implode( ',', array_fill(1, count($postmetaids), '%d')); 1508 do_action( 'delete_postmeta', $postmetaids ); 1509 $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id IN($in)", $postmetaids )); 1510 do_action( 'deleted_postmeta', $postmetaids ); 1511 foreach ( $post_ids as $post_id ) 1512 wp_cache_delete($post_id, 'post_meta'); 1513 return true; 1514 } 1515 return false; 1500 return delete_metadata( 'post', null, $post_meta_key, '', true ); 1516 1501 } 1517 1502 1518 1503 /** -
wp-includes/meta.php
149 149 } 150 150 151 151 do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 152 153 if ( 'post' == $meta_type ) 154 do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 152 155 153 156 $wpdb->update( $table, $data, $where ); 154 157 … … 158 161 clean_user_cache($object_id); 159 162 160 163 do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 164 165 if ( 'post' == $meta_type ) 166 do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 161 167 162 168 return true; 163 169 } … … 204 210 205 211 $_meta_value = $meta_value; 206 212 $meta_value = maybe_serialize( $meta_value ); 207 213 208 214 $query = $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s", $meta_key ); 209 215 210 216 if ( !$delete_all ) … … 217 223 if ( !count( $meta_ids ) ) 218 224 return false; 219 225 226 if ( $delete_all ) 227 $object_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $type_column FROM $table WHERE meta_key = %s", $meta_key ) ); 228 220 229 do_action( "delete_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value ); 230 231 if ( 'post' == $meta_type ) 232 do_action( 'delete_postmeta', $meta_ids ); 221 233 222 234 $query = "DELETE FROM $table WHERE $id_column IN( " . implode( ',', $meta_ids ) . " )"; 223 235 224 236 $count = $wpdb->query($query); 225 237 226 238 if ( !$count ) 227 239 return false; 228 240 229 wp_cache_delete($object_id, $meta_type . '_meta'); 241 if ( $delete_all ) { 242 foreach ( (array) $object_ids as $o_id ) { 243 wp_cache_delete($o_id, $meta_type . '_meta'); 244 } 245 } else { 246 wp_cache_delete($object_id, $meta_type . '_meta'); 247 } 248 230 249 // users cache stores usermeta that must be cleared. 231 250 if ( 'user' == $meta_type ) 232 251 clean_user_cache($object_id); 233 252 234 253 do_action( "deleted_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value ); 254 255 if ( 'post' == $meta_type ) 256 do_action( 'deleted_postmeta', $meta_ids ); 235 257 236 258 return true; 237 259 } … … 381 403 $where[$id_column] = $meta_id; 382 404 383 405 do_action( "update_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 406 407 if ( 'post' == $meta_type ) 408 do_action( 'update_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 384 409 385 410 // Run the update query, all fields in $data are %s, $where is a %d. 386 411 $result = (bool) $wpdb->update( $table, $data, $where, '%s', '%d' ); … … 394 419 395 420 do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value ); 396 421 422 if ( 'post' == $meta_type ) 423 do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value ); 424 397 425 return $result; 398 426 } 399 427 … … 436 464 437 465 do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value ); 438 466 467 if ( 'post' == $meta_type ) 468 do_action( 'delete_postmeta', $object_id ); 469 439 470 // Run the query, will return true if deleted, false otherwise 440 471 $result = (bool) $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE $id_column = %d LIMIT 1;", $meta_id ) ); 441 472 … … 448 479 449 480 do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value ); 450 481 482 if ( 'post' == $meta_type ) 483 do_action( 'delete_postmeta', $object_id ); 484 451 485 return $result; 452 486 453 487 } -
wp-admin/includes/post.php
701 701 * @return unknown 702 702 */ 703 703 function delete_meta( $mid ) { 704 global $wpdb; 705 $mid = (int) $mid; 706 707 $post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); 708 709 do_action( 'delete_postmeta', $mid ); 710 wp_cache_delete($post_id, 'post_meta'); 711 $rval = $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); 712 do_action( 'deleted_postmeta', $mid ); 713 714 return $rval; 704 return delete_metadata_by_mid( 'post' , $mid ); 715 705 } 716 706 717 707 /** … … 742 732 * @return unknown 743 733 */ 744 734 function get_post_meta_by_id( $mid ) { 745 global $wpdb; 746 $mid = (int) $mid; 747 748 $meta = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); 749 if ( empty($meta) ) 750 return false; 751 if ( is_serialized_string( $meta->meta_value ) ) 752 $meta->meta_value = maybe_unserialize( $meta->meta_value ); 753 return $meta; 735 return get_metadata_by_mid( 'post', $mid ); 754 736 } 755 737 756 738 /** … … 782 764 * @return unknown 783 765 */ 784 766 function update_meta( $meta_id, $meta_key, $meta_value ) { 785 global $wpdb; 767 $meta_key = stripslashes( $meta_key ); 768 $meta_value = stripslashes_deep( $meta_value ); 786 769 787 $meta_key = stripslashes($meta_key); 788 789 if ( '' === trim( $meta_value ) ) 790 return false; 791 792 $post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $meta_id) ); 793 794 $meta_value = maybe_serialize( stripslashes_deep( $meta_value ) ); 795 $meta_id = (int) $meta_id; 796 797 $data = compact( 'meta_key', 'meta_value' ); 798 $where = compact( 'meta_id' ); 799 800 do_action( 'update_postmeta', $meta_id, $post_id, $meta_key, $meta_value ); 801 $rval = $wpdb->update( $wpdb->postmeta, $data, $where ); 802 wp_cache_delete($post_id, 'post_meta'); 803 do_action( 'updated_postmeta', $meta_id, $post_id, $meta_key, $meta_value ); 804 805 return $rval; 770 return update_metadata_by_mid( 'post', $meta_id, $meta_value, $meta_key ); 806 771 } 807 772 808 773 //