block_core_comment_template_render_comments

The timeline below displays how wordpress function block_core_comment_template_render_comments has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Server-side rendering of the `core/comment-template` block.
 *
 * @package WordPress
 */
/**
 * Function that recursively renders a list of nested comments.
 *
 * @since 6.3.0 Changed render_block_context priority to `1`.
 *
 * @global int $comment_depth
 *
 * @param WP_Comment[] $comments        The array of comments.
 * @param WP_Block     $block           Block instance.
 * @return string
 */
function block_core_comment_template_render_comments($comments, $block)
{
    global $comment_depth;
    $thread_comments = get_option('thread_comments');
    $thread_comments_depth = get_option('thread_comments_depth');
    if (empty($comment_depth)) {
        $comment_depth = 1;
    }
    $content = '';
    foreach ($comments as $comment) {
        $comment_id = $comment->comment_ID;
        $filter_block_context = static function ($context) use ($comment_id) {
            $context['commentId'] = $comment_id;
            return $context;
        };
        /*
         * We set commentId context through the `render_block_context` filter so
         * that dynamically inserted blocks (at `render_block` filter stage)
         * will also receive that context.
         *
         * Use an early priority to so that other 'render_block_context' filters
         * have access to the values.
         */
        add_filter('render_block_context', $filter_block_context, 1);
        /*
         * We construct a new WP_Block instance from the parsed block so that
         * it'll receive any changes made by the `render_block_data` filter.
         */
        $block_content = (new WP_Block($block->parsed_block))->render(array('dynamic' => false));
        remove_filter('render_block_context', $filter_block_context, 1);
        $children = $comment->get_children();
        /*
         * We need to create the CSS classes BEFORE recursing into the children.
         * This is because comment_class() uses globals like `$comment_alt`
         * and `$comment_thread_alt` which are order-sensitive.
         *
         * The `false` parameter at the end means that we do NOT want the function
         * to `echo` the output but to return a string.
         * See https://developer.wordpress.org/reference/functions/comment_class/#parameters.
         */
        $comment_classes = comment_class('', $comment->comment_ID, $comment->comment_post_ID, false);
        // If the comment has children, recurse to create the HTML for the nested
        // comments.
        if (!empty($children) && !empty($thread_comments)) {
            if ($comment_depth < $thread_comments_depth) {
                ++$comment_depth;
                $inner_content = block_core_comment_template_render_comments($children, $block);
                $block_content .= sprintf('<ol>%1$s</ol>', $inner_content);
                --$comment_depth;
            } else {
                $block_content .= block_core_comment_template_render_comments($children, $block);
            }
        }
        $content .= sprintf('<li id="comment-%1$s" %2$s>%3$s</li>', $comment->comment_ID, $comment_classes, $block_content);
    }
    return $content;
}

WordPress Version: 2.1

/**
 * Server-side rendering of the `core/comment-template` block.
 *
 * @package WordPress
 */
/**
 * Function that recursively renders a list of nested comments.
 *
 * @global int $comment_depth
 *
 * @param WP_Comment[] $comments        The array of comments.
 * @param WP_Block     $block           Block instance.
 * @return string
 */
function block_core_comment_template_render_comments($comments, $block)
{
    global $comment_depth;
    $thread_comments = get_option('thread_comments');
    $thread_comments_depth = get_option('thread_comments_depth');
    if (empty($comment_depth)) {
        $comment_depth = 1;
    }
    $content = '';
    foreach ($comments as $comment) {
        $block_content = (new WP_Block($block->parsed_block, array('commentId' => $comment->comment_ID)))->render(array('dynamic' => false));
        $children = $comment->get_children();
        /*
         * We need to create the CSS classes BEFORE recursing into the children.
         * This is because comment_class() uses globals like `$comment_alt`
         * and `$comment_thread_alt` which are order-sensitive.
         *
         * The `false` parameter at the end means that we do NOT want the function
         * to `echo` the output but to return a string.
         * See https://developer.wordpress.org/reference/functions/comment_class/#parameters.
         */
        $comment_classes = comment_class('', $comment->comment_ID, $comment->comment_post_ID, false);
        // If the comment has children, recurse to create the HTML for the nested
        // comments.
        if (!empty($children) && !empty($thread_comments)) {
            if ($comment_depth < $thread_comments_depth) {
                ++$comment_depth;
                $inner_content = block_core_comment_template_render_comments($children, $block);
                $block_content .= sprintf('<ol>%1$s</ol>', $inner_content);
                --$comment_depth;
            } else {
                $block_content .= block_core_comment_template_render_comments($children, $block);
            }
        }
        $content .= sprintf('<li id="comment-%1$s" %2$s>%3$s</li>', $comment->comment_ID, $comment_classes, $block_content);
    }
    return $content;
}

WordPress Version: 6.2

/**
 * Server-side rendering of the `core/comment-template` block.
 *
 * @package WordPress
 */
/**
 * Function that recursively renders a list of nested comments.
 *
 * @global int $comment_depth
 *
 * @param WP_Comment[] $comments        The array of comments.
 * @param WP_Block     $block           Block instance.
 * @return string
 */
function block_core_comment_template_render_comments($comments, $block)
{
    global $comment_depth;
    $thread_comments = get_option('thread_comments');
    $thread_comments_depth = get_option('thread_comments_depth');
    if (empty($comment_depth)) {
        $comment_depth = 1;
    }
    $content = '';
    foreach ($comments as $comment) {
        $block_content = (new WP_Block($block->parsed_block, array('commentId' => $comment->comment_ID)))->render(array('dynamic' => false));
        $children = $comment->get_children();
        /*
         * We need to create the CSS classes BEFORE recursing into the children.
         * This is because comment_class() uses globals like `$comment_alt`
         * and `$comment_thread_alt` which are order-sensitive.
         *
         * The `false` parameter at the end means that we do NOT want the function
         * to `echo` the output but to return a string.
         * See https://developer.wordpress.org/reference/functions/comment_class/#parameters.
         */
        $comment_classes = comment_class('', $comment->comment_ID, $comment->comment_post_ID, false);
        // If the comment has children, recurse to create the HTML for the nested
        // comments.
        if (!empty($children) && !empty($thread_comments)) {
            if ($comment_depth < $thread_comments_depth) {
                ++$comment_depth;
                $inner_content = block_core_comment_template_render_comments($children, $block);
                $block_content .= sprintf('<ol>%1$s</ol>', $inner_content);
                --$comment_depth;
            } else {
                $inner_content = block_core_comment_template_render_comments($children, $block);
                $block_content .= sprintf($inner_content);
            }
        }
        $content .= sprintf('<li id="comment-%1$s" %2$s>%3$s</li>', $comment->comment_ID, $comment_classes, $block_content);
    }
    return $content;
}

WordPress Version: 6.1

/**
 * Server-side rendering of the `core/comment-template` block.
 *
 * @package WordPress
 */
/**
 * Function that recursively renders a list of nested comments.
 *
 * @global int $comment_depth
 *
 * @param WP_Comment[] $comments        The array of comments.
 * @param WP_Block     $block           Block instance.
 * @return string
 */
function block_core_comment_template_render_comments($comments, $block)
{
    global $comment_depth;
    $thread_comments = get_option('thread_comments');
    $thread_comments_depth = get_option('thread_comments_depth');
    if (empty($comment_depth)) {
        $comment_depth = 1;
    }
    $content = '';
    foreach ($comments as $comment) {
        $block_content = (new WP_Block($block->parsed_block, array('commentId' => $comment->comment_ID)))->render(array('dynamic' => false));
        $children = $comment->get_children();
        /*
         * We need to create the CSS classes BEFORE recursing into the children.
         * This is because comment_class() uses globals like `$comment_alt`
         * and `$comment_thread_alt` which are order-sensitive.
         *
         * The `false` parameter at the end means that we do NOT want the function
         * to `echo` the output but to return a string.
         * See https://developer.wordpress.org/reference/functions/comment_class/#parameters.
         */
        $comment_classes = comment_class('', $comment->comment_ID, $comment->comment_post_ID, false);
        // If the comment has children, recurse to create the HTML for the nested
        // comments.
        if (!empty($children) && !empty($thread_comments)) {
            if ($comment_depth < $thread_comments_depth) {
                $comment_depth += 1;
                $inner_content = block_core_comment_template_render_comments($children, $block);
                $block_content .= sprintf('<ol>%1$s</ol>', $inner_content);
                $comment_depth -= 1;
            } else {
                $inner_content = block_core_comment_template_render_comments($children, $block);
                $block_content .= sprintf($inner_content);
            }
        }
        $content .= sprintf('<li id="comment-%1$s" %2$s>%3$s</li>', $comment->comment_ID, $comment_classes, $block_content);
    }
    return $content;
}