WordPress.org

Make WordPress Core

Ticket #18196: 18196.patch

File 18196.patch, 4.7 KB (added by jgadbois, 3 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//