Пример #1
0
/**
 * 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);
    }
}
Пример #2
0
/**
 * 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);
    }
}