Skip to content

Commit 107a5cb

Browse files
committed
Use JIT flushing of post meta cache.
1 parent 2552000 commit 107a5cb

3 files changed

Lines changed: 18 additions & 3 deletions

File tree

src/wp-includes/class-wp-query.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2473,6 +2473,10 @@ public function get_posts() {
24732473
$clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this );
24742474
$join .= $clauses['join'];
24752475
$where .= $clauses['where'];
2476+
2477+
if ( ! wp_cache_get( 'wp_query_meta_query_updated', 'post_meta' ) ) {
2478+
wp_cache_set_posts_last_changed();
2479+
}
24762480
}
24772481

24782482
$rand = ( isset( $query_vars['orderby'] ) && 'rand' === $query_vars['orderby'] );

src/wp-includes/default-filters.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@
122122
}
123123

124124
// Post meta.
125-
add_action( 'added_post_meta', 'wp_cache_set_posts_last_changed' );
126-
add_action( 'updated_post_meta', 'wp_cache_set_posts_last_changed' );
127-
add_action( 'deleted_post_meta', 'wp_cache_set_posts_last_changed' );
125+
add_action( 'added_post_meta', 'wp_cache_set_needs_meta_query_flush' );
126+
add_action( 'updated_post_meta', 'wp_cache_set_needs_meta_query_flush' );
127+
add_action( 'deleted_post_meta', 'wp_cache_set_needs_meta_query_flush' );
128128

129129
// User meta.
130130
add_action( 'added_user_meta', 'wp_cache_set_users_last_changed' );

src/wp-includes/post.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8444,6 +8444,17 @@ function wp_add_trashed_suffix_to_post_name_for_post( $post ) {
84448444
*/
84458445
function wp_cache_set_posts_last_changed() {
84468446
wp_cache_set_last_changed( 'posts' );
8447+
// Indicate meta query cache is updated for use in WP_Query
8448+
wp_cache_set( 'wp_query_meta_query_updated', true, 'post_meta' );
8449+
}
8450+
8451+
/**
8452+
* Marks the WP_Query cache as needing to be flushed after a meta query change.
8453+
*
8454+
* @since 7.0.0
8455+
*/
8456+
function wp_cache_set_needs_meta_query_flush() {
8457+
wp_cache_delete( 'wp_query_meta_query_updated', 'post_meta' );
84478458
}
84488459

84498460
/**

0 commit comments

Comments
 (0)