render_block_core_post_comments_form

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

WordPress Version: 6.2

/**
 * Server-side rendering of the `core/post-comments-form` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/post-comments-form` block on the server.
 *
 * @param array    $attributes Block attributes.
 * @param string   $content    Block default content.
 * @param WP_Block $block      Block instance.
 * @return string Returns the filtered post comments form for the current post.
 */
function render_block_core_post_comments_form($attributes, $content, $block)
{
    if (!isset($block->context['postId'])) {
        return '';
    }
    if (post_password_required($block->context['postId'])) {
        return;
    }
    $classes = array('comment-respond');
    // See comment further below.
    if (isset($attributes['textAlign'])) {
        $classes[] = 'has-text-align-' . $attributes['textAlign'];
    }
    if (isset($attributes['style']['elements']['link']['color']['text'])) {
        $classes[] = 'has-link-color';
    }
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => implode(' ', $classes)));
    add_filter('comment_form_defaults', 'post_comments_form_block_form_defaults');
    ob_start();
    comment_form(array(), $block->context['postId']);
    $form = ob_get_clean();
    remove_filter('comment_form_defaults', 'post_comments_form_block_form_defaults');
    // We use the outermost wrapping `<div />` returned by `comment_form()`
    // which is identified by its default classname `comment-respond` to inject
    // our wrapper attributes. This way, it is guaranteed that all styling applied
    // to the block is carried along when the comment form is moved to the location
    // of the 'Reply' link that the user clicked by Core's `comment-reply.js` script.
    $form = str_replace('class="comment-respond"', $wrapper_attributes, $form);
    // Enqueue the comment-reply script.
    wp_enqueue_script('comment-reply');
    return $form;
}

WordPress Version: 6.1

/**
 * Server-side rendering of the `core/post-comments-form` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/post-comments-form` block on the server.
 *
 * @param array    $attributes Block attributes.
 * @param string   $content    Block default content.
 * @param WP_Block $block      Block instance.
 * @return string Returns the filtered post comments form for the current post.
 */
function render_block_core_post_comments_form($attributes, $content, $block)
{
    if (!isset($block->context['postId'])) {
        return '';
    }
    if (post_password_required($block->context['postId'])) {
        return;
    }
    $classes = 'comment-respond';
    // See comment further below.
    if (isset($attributes['textAlign'])) {
        $classes .= ' has-text-align-' . $attributes['textAlign'];
    }
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => $classes));
    add_filter('comment_form_defaults', 'post_comments_form_block_form_defaults');
    ob_start();
    comment_form(array(), $block->context['postId']);
    $form = ob_get_clean();
    remove_filter('comment_form_defaults', 'post_comments_form_block_form_defaults');
    // We use the outermost wrapping `<div />` returned by `comment_form()`
    // which is identified by its default classname `comment-respond` to inject
    // our wrapper attributes. This way, it is guaranteed that all styling applied
    // to the block is carried along when the comment form is moved to the location
    // of the 'Reply' link that the user clicked by Core's `comment-reply.js` script.
    $form = str_replace('class="comment-respond"', $wrapper_attributes, $form);
    // Enqueue the comment-reply script.
    wp_enqueue_script('comment-reply');
    return $form;
}