Skip to content

Instantly share code, notes, and snippets.

@vanleantking
Forked from lukecav/functions.php
Created February 2, 2021 09:57
Show Gist options
  • Save vanleantking/cd0c8f35d75da38cb578d25048489456 to your computer and use it in GitHub Desktop.
Save vanleantking/cd0c8f35d75da38cb578d25048489456 to your computer and use it in GitHub Desktop.
Reducing postmeta queries with update_meta_cache()
add_filter( 'posts_results', 'cache_meta_data', 9999, 2 );
function cache_meta_data( $posts, $object ) {
$posts_to_cache = array();
// this usually makes only sense when we have a bunch of posts
if ( empty( $posts ) || is_wp_error( $posts ) || is_single() || is_page() || count( $posts ) < 3 )
return $posts;
foreach( $posts as $post ) {
if ( isset( $post->ID ) && isset( $post->post_type ) ) {
$posts_to_cache[$post->ID] = 1;
}
}
if ( empty( $posts_to_cache ) )
return $posts;
update_meta_cache( 'post', array_keys( $posts_to_cache ) );
unset( $posts_to_cache );
return $posts;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment