render_block( array $parsed_block ): string
Renders a single block into a HTML string.
Parameters
-
$parsed_block
array Required -
A single parsed block object.
Return
string String of rendered HTML.
Source
File: wp-includes/blocks.php
.
View all references
function render_block( $parsed_block ) {
global $post;
$parent_block = null;
/**
* Allows render_block() to be short-circuited, by returning a non-null value.
*
* @since 5.1.0
* @since 5.9.0 The `$parent_block` parameter was added.
*
* @param string|null $pre_render The pre-rendered content. Default null.
* @param array $parsed_block The block being rendered.
* @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block.
*/
$pre_render = apply_filters( 'pre_render_block', null, $parsed_block, $parent_block );
if ( ! is_null( $pre_render ) ) {
return $pre_render;
}
$source_block = $parsed_block;
/**
* Filters the block being rendered in render_block(), before it's processed.
*
* @since 5.1.0
* @since 5.9.0 The `$parent_block` parameter was added.
*
* @param array $parsed_block The block being rendered.
* @param array $source_block An un-modified copy of $parsed_block, as it appeared in the source content.
* @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block.
*/
$parsed_block = apply_filters( 'render_block_data', $parsed_block, $source_block, $parent_block );
$context = array();
if ( $post instanceof WP_Post ) {
$context['postId'] = $post->ID;
/*
* The `postType` context is largely unnecessary server-side, since the ID
* is usually sufficient on its own. That being said, since a block's
* manifest is expected to be shared between the server and the client,
* it should be included to consistently fulfill the expectation.
*/
$context['postType'] = $post->post_type;
}
/**
* Filters the default context provided to a rendered block.
*
* @since 5.5.0
* @since 5.9.0 The `$parent_block` parameter was added.
*
* @param array $context Default context.
* @param array $parsed_block Block being rendered, filtered by `render_block_data`.
* @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block.
*/
$context = apply_filters( 'render_block_context', $context, $parsed_block, $parent_block );
$block = new WP_Block( $parsed_block, $context );
return $block->render();
}
Hooks
-
apply_filters( 'pre_render_block',
string|null $pre_render ,array $parsed_block ,WP_Block|null $parent_block ) -
Allows render_block() to be short-circuited, by returning a non-null value.
-
apply_filters( 'render_block_context',
array $context ,array $parsed_block ,WP_Block|null $parent_block ) -
Filters the default context provided to a rendered block.
-
apply_filters( 'render_block_data',
array $parsed_block ,array $source_block ,WP_Block|null $parent_block ) -
Filters the block being rendered in render_block() , before it’s processed.
Changelog
Version | Description |
---|---|
5.0.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
If you are trying to render Gutenberg block code, you will need to use
parse_blocks
, thenrender_block
on each result in the returned array, then useapply_filters( 'the_content', ... )
on the result, to then get the final block code.Here’s a generic example of what you might do to convert a YouTube URL into a
wp-block-embed-youtube