Apply the pre_render_block, render_block_data, and render_block_context filters when rendering inner/nested blocks. Introdices another param to these filters: $parent_block that is the "parent" WP_Block instance for nested blocks and null for top level blocks. Adds unit tests for the filters.
Props noisysocks, gaambo, azaozz. Fixes #51612. Built from https://develop.svn.wordpress.org/trunk@51894 git-svn-id: http://core.svn.wordpress.org/trunk@51487 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -813,16 +813,18 @@ function _excerpt_render_inner_blocks( $parsed_block, $allowed_blocks ) {
|
||||
*/
|
||||
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
|
||||
*
|
||||
* @param string|null $pre_render The pre-rendered content. Default null.
|
||||
* @param array $parsed_block The block being rendered.
|
||||
* @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 );
|
||||
$pre_render = apply_filters( 'pre_render_block', null, $parsed_block, $parent_block );
|
||||
if ( ! is_null( $pre_render ) ) {
|
||||
return $pre_render;
|
||||
}
|
||||
@@ -834,10 +836,11 @@ function render_block( $parsed_block ) {
|
||||
*
|
||||
* @since 5.1.0
|
||||
*
|
||||
* @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 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 );
|
||||
$parsed_block = apply_filters( 'render_block_data', $parsed_block, $source_block, $parent_block );
|
||||
|
||||
$context = array();
|
||||
|
||||
@@ -858,10 +861,11 @@ function render_block( $parsed_block ) {
|
||||
*
|
||||
* @since 5.5.0
|
||||
*
|
||||
* @param array $context Default context.
|
||||
* @param array $parsed_block Block being rendered, filtered by `render_block_data`.
|
||||
* @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 );
|
||||
$context = apply_filters( 'render_block_context', $context, $parsed_block, $parent_block );
|
||||
|
||||
$block = new WP_Block( $parsed_block, $context );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user