/** * Queue posts for lazyloading of term meta. * * @since 4.5.0 * * @param array $posts Array of WP_Post objects. */ function wp_queue_posts_for_term_meta_lazyload($posts) { $post_type_taxonomies = $term_ids = array(); foreach ($posts as $post) { if (!$post instanceof WP_Post) { continue; } if (!isset($post_type_taxonomies[$post->post_type])) { $post_type_taxonomies[$post->post_type] = get_object_taxonomies($post->post_type); } foreach ($post_type_taxonomies[$post->post_type] as $taxonomy) { // Term cache should already be primed by `update_post_term_cache()`. $terms = get_object_term_cache($post->ID, $taxonomy); if (false !== $terms) { foreach ($terms as $term) { if (!isset($term_ids[$term->term_id])) { $term_ids[] = $term->term_id; } } } } } if ($term_ids) { $lazyloader = wp_metadata_lazyloader(); $lazyloader->queue_objects('term', $term_ids); } }
/** * Queue comments for metadata lazyloading. * * @since 4.5.0 * * @param array $comments Array of comment objects. */ function wp_queue_comments_for_comment_meta_lazyload($comments) { // Don't use `wp_list_pluck()` to avoid by-reference manipulation. $comment_ids = array(); if (is_array($comments)) { foreach ($comments as $comment) { if ($comment instanceof WP_Comment) { $comment_ids[] = $comment->comment_ID; } } } if ($comment_ids) { $lazyloader = wp_metadata_lazyloader(); $lazyloader->queue_objects('comment', $comment_ids); } }