WordPress.org

Make WordPress Core

Ticket #18196: 18196.patch

File 18196.patch, 4.7 KB (added by jgadbois, 7 years ago)
  • fixed a bug in the patch
  • wp-includes/post.php

     
    14971497 * @return bool Whether the post meta key was deleted from the database
    14981498 */
    14991499function 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 );
    15161501}
    15171502
    15181503/**
  • wp-includes/meta.php

     
    149149        }
    150150
    151151        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 );   
    152155
    153156        $wpdb->update( $table, $data, $where );
    154157
     
    158161                clean_user_cache($object_id);
    159162
    160163        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 );         
    161167
    162168        return true;
    163169}
     
    218224                return false;
    219225
    220226        do_action( "delete_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
    221 
     227       
     228        if ( 'post' == $meta_type ) {
     229                $first_meta_id = sizeof( $meta_ids ) > 0 ? $meta_ids[0] : null;
     230                do_action( 'delete_postmeta', $delete_all ? $meta_ids : $first_meta_id );
     231        }
     232       
    222233        $query = "DELETE FROM $table WHERE $id_column IN( " . implode( ',', $meta_ids ) . " )";
    223 
     234       
    224235        $count = $wpdb->query($query);
    225236
    226237        if ( !$count )
     
    232243                clean_user_cache($object_id);
    233244
    234245        do_action( "deleted_{$meta_type}_meta", $meta_ids, $object_id, $meta_key, $_meta_value );
     246       
     247        if ( 'post' == $meta_type ) {
     248                do_action( 'deleted_postmeta', $delete_all ? $meta_ids : $first_meta_id );     
     249        }
    235250
    236251        return true;
    237252}
  • wp-admin/includes/post.php

     
    701701 * @return unknown
    702702 */
    703703function delete_meta( $mid ) {
    704         global $wpdb;
    705         $mid = (int) $mid;
     704        $meta = get_metadata_by_mid( 'post', $mid );
    706705
    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;
     706        return delete_metadata( 'post', $meta->post_id, $meta->meta_key, $meta->meta_value );
    715707}
    716708
    717709/**
     
    742734 * @return unknown
    743735 */
    744736function 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;
     737        return get_metadata_by_mid( 'post', $mid );
    754738}
    755739
    756740/**
     
    782766 * @return unknown
    783767 */
    784768function update_meta( $meta_id, $meta_key, $meta_value ) {
    785         global $wpdb;
    786 
    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;
     769        $meta = get_metadata_by_mid( 'post', $meta_id);
     770        return update_metadata( 'post', $meta->post_id, $meta_key, $meta_value, $meta->meta_value );
    806771}
    807772
    808773//