WordPress.org

Make WordPress Core

Ticket #18196: 18196.2.diff

File 18196.2.diff, 6.5 KB (added by ryan, 7 years ago)

cache cleaning for delete_all

  • 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}
     
    204210
    205211        $_meta_value = $meta_value;
    206212        $meta_value = maybe_serialize( $meta_value );
    207 
     213               
    208214        $query = $wpdb->prepare( "SELECT $id_column FROM $table WHERE meta_key = %s", $meta_key );
    209215
    210216        if ( !$delete_all )
     
    217223        if ( !count( $meta_ids ) )
    218224                return false;
    219225
     226        if ( $delete_all )
     227                $object_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $type_column FROM $table WHERE meta_key = %s", $meta_key ) );
     228
    220229        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 );
    221233
    222234        $query = "DELETE FROM $table WHERE $id_column IN( " . implode( ',', $meta_ids ) . " )";
    223 
     235       
    224236        $count = $wpdb->query($query);
    225237
    226238        if ( !$count )
    227239                return false;
    228240
    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
    230249        // users cache stores usermeta that must be cleared.
    231250        if ( 'user' == $meta_type )
    232251                clean_user_cache($object_id);
    233252
    234253        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 );
    235257
    236258        return true;
    237259}
     
    381403                $where[$id_column] = $meta_id;
    382404
    383405                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 );
    384409               
    385410                // Run the update query, all fields in $data are %s, $where is a %d.
    386411                $result = (bool) $wpdb->update( $table, $data, $where, '%s', '%d' );
     
    394419
    395420                do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
    396421
     422                if ( 'post' == $meta_type )
     423                        do_action( 'updated_postmeta', $meta_id, $object_id, $meta_key, $meta_value );
     424
    397425                return $result;
    398426        }
    399427       
     
    436464
    437465                do_action( "delete_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
    438466
     467                if ( 'post' == $meta_type )
     468                        do_action( 'delete_postmeta', $object_id );
     469
    439470                // Run the query, will return true if deleted, false otherwise
    440471                $result = (bool) $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE $id_column = %d LIMIT 1;", $meta_id ) );
    441472
     
    448479
    449480                do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
    450481
     482                if ( 'post' == $meta_type )
     483                        do_action( 'delete_postmeta', $object_id );
     484
    451485                return $result;
    452486
    453487        }
  • wp-admin/includes/post.php

     
    701701 * @return unknown
    702702 */
    703703function 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 );
    715705}
    716706
    717707/**
     
    742732 * @return unknown
    743733 */
    744734function 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 );
    754736}
    755737
    756738/**
     
    782764 * @return unknown
    783765 */
    784766function update_meta( $meta_id, $meta_key, $meta_value ) {
    785         global $wpdb;
     767        $meta_key = stripslashes( $meta_key );
     768        $meta_value = stripslashes_deep( $meta_value );
    786769
    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 );
    806771}
    807772
    808773//