Make WordPress Core

Ticket #40669: 40669.diff

File 40669.diff, 5.5 KB (added by spacedmonkey, 7 years ago)
  • src/wp-includes/class-wp-comment-query.php

     
    394394                // $args can include anything. Only use the args defined in the query_var_defaults to compute the key.
    395395                $key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ) ) );
    396396                $last_changed = wp_cache_get_last_changed( 'comment' );
    397 
     397                // Cache bust if a meta query.
     398                if ( ! empty( $args['meta_query'] ) || ! empty( $args['meta_key'] ) ) {
     399                        $last_changed_meta = wp_cache_get_last_changed( 'comment_meta' );
     400                        $last_changed .= ":" . $last_changed_meta;
     401                }
    398402
    399403                $cache_key   = "get_comments:$key:$last_changed";
    400404                $cache_value = wp_cache_get( $cache_key, 'comment' );
     
    948952
    949953                $key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ) ) );
    950954                $last_changed = wp_cache_get_last_changed( 'comment' );
    951 
     955                // Cache bust if a meta query.
     956                if ( ! empty( $this->query_vars['meta_query'] ) || ! empty( $this->query_vars['meta_key'] ) ) {
     957                        $last_changed_meta = wp_cache_get_last_changed( 'comment_meta' );
     958                        $last_changed .= ":" . $last_changed_meta;
     959                }
    952960                // Fetch an entire level of the descendant tree at a time.
    953961                $level = 0;
    954962                $exclude_keys = array( 'parent', 'parent__in', 'parent__not_in' );
  • src/wp-includes/class-wp-term-query.php

     
    675675                // $args can be anything. Only use the args defined in defaults to compute the key.
    676676                $key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $this->query_var_defaults ) ) ) . serialize( $taxonomies ) . $this->request );
    677677                $last_changed = wp_cache_get_last_changed( 'terms' );
     678                // Cache bust if a meta query.
     679                if ( ! empty( $args['meta_query'] ) || ! empty( $args['meta_key'] ) ) {
     680                        $last_changed_meta = wp_cache_get_last_changed( 'term_meta' );
     681                        $last_changed .= ":" . $last_changed_meta;
     682                }
    678683                $cache_key = "get_terms:$key:$last_changed";
    679684                $cache = wp_cache_get( $cache_key, 'terms' );
    680685                if ( false !== $cache ) {
  • src/wp-includes/meta.php

     
    104104
    105105        $mid = (int) $wpdb->insert_id;
    106106
    107         wp_cache_delete($object_id, $meta_type . '_meta');
     107        $cache_group = $meta_type . '_meta';
     108        wp_cache_set( 'last_changed', microtime(), $cache_group );
     109        wp_cache_delete( $object_id, $cache_group );
    108110
    109111        /**
    110112         * Fires immediately after meta of a specific type is added.
     
    248250        if ( ! $result )
    249251                return false;
    250252
    251         wp_cache_delete($object_id, $meta_type . '_meta');
     253        $cache_group = $meta_type . '_meta';
     254        wp_cache_set( 'last_changed', microtime(), $cache_group );
     255        wp_cache_delete( $object_id, $cache_group );
    252256
    253257        foreach ( $meta_ids as $meta_id ) {
    254258                /**
     
    406410        if ( !$count )
    407411                return false;
    408412
     413        $cache_group = $meta_type . '_meta';
     414        wp_cache_set( 'last_changed', microtime(), $cache_group );
    409415        if ( $delete_all ) {
    410416                foreach ( (array) $object_ids as $o_id ) {
    411                         wp_cache_delete($o_id, $meta_type . '_meta');
     417                        wp_cache_delete( $o_id, $cache_group );
    412418                }
    413419        } else {
    414                 wp_cache_delete($object_id, $meta_type . '_meta');
     420                wp_cache_delete( $object_id, $cache_group );
    415421        }
    416422
     423
    417424        /**
    418425         * Fires immediately after deleting metadata of a specific type.
    419426         *
     
    670677                        return false;
    671678
    672679                // Clear the caches.
    673                 wp_cache_delete($object_id, $meta_type . '_meta');
     680                $cache_group = $meta_type . '_meta';
     681                wp_cache_set( 'last_changed', microtime(), $cache_group );
     682                wp_cache_delete( $object_id, $cache_group );
    674683
    675684                /** This action is documented in wp-includes/meta.php */
    676685                do_action( "updated_{$meta_type}_meta", $meta_id, $object_id, $meta_key, $_meta_value );
     
    746755                $result = (bool) $wpdb->delete( $table, array( $id_column => $meta_id ) );
    747756
    748757                // Clear the caches.
    749                 wp_cache_delete($object_id, $meta_type . '_meta');
     758                $cache_group = $meta_type . '_meta';
     759                wp_cache_set( 'last_changed', microtime(), $cache_group );
     760                wp_cache_delete( $object_id, $cache_group );
    750761
    751762                /** This action is documented in wp-includes/meta.php */
    752763                do_action( "deleted_{$meta_type}_meta", (array) $meta_id, $object_id, $meta->meta_key, $meta->meta_value );
  • src/wp-includes/taxonomy.php

     
    11301130
    11311131        $added = add_metadata( 'term', $term_id, $meta_key, $meta_value, $unique );
    11321132
    1133         // Bust term query cache.
    1134         if ( $added ) {
    1135                 wp_cache_set( 'last_changed', microtime(), 'terms' );
    1136         }
    1137 
    11381133        return $added;
    11391134}
    11401135
     
    11561151
    11571152        $deleted = delete_metadata( 'term', $term_id, $meta_key, $meta_value );
    11581153
    1159         // Bust term query cache.
    1160         if ( $deleted ) {
    1161                 wp_cache_set( 'last_changed', microtime(), 'terms' );
    1162         }
    1163 
    11641154        return $deleted;
    11651155}
    11661156
     
    12121202
    12131203        $updated = update_metadata( 'term', $term_id, $meta_key, $meta_value, $prev_value );
    12141204
    1215         // Bust term query cache.
    1216         if ( $updated ) {
    1217                 wp_cache_set( 'last_changed', microtime(), 'terms' );
    1218         }
    1219 
    12201205        return $updated;
    12211206}
    12221207