WordPress Version: 6.2
/**
* Adds any posts from the given IDs to the cache that do not already exist in cache.
*
* @since 3.4.0
* @since 6.1.0 This function is no longer marked as "private".
*
* @see update_post_cache()
* @see update_postmeta_cache()
* @see update_object_term_cache()
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param int[] $ids ID list.
* @param bool $update_term_cache Optional. Whether to update the term cache. Default true.
* @param bool $update_meta_cache Optional. Whether to update the meta cache. Default true.
*/
function _prime_post_caches($ids, $update_term_cache = true, $update_meta_cache = true)
{
global $wpdb;
$non_cached_ids = _get_non_cached_ids($ids, 'posts');
if (!empty($non_cached_ids)) {
$fresh_posts = $wpdb->get_results(sprintf("SELECT {$wpdb->posts}.* FROM {$wpdb->posts} WHERE ID IN (%s)", implode(',', $non_cached_ids)));
if ($fresh_posts) {
// Despite the name, update_post_cache() expects an array rather than a single post.
update_post_cache($fresh_posts);
}
}
if ($update_meta_cache) {
update_postmeta_cache($ids);
}
if ($update_term_cache) {
$post_types = array_map('get_post_type', $ids);
$post_types = array_unique($post_types);
update_object_term_cache($ids, $post_types);
}
}