Alert: This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.
make_after_block_visitor( array $hooked_blocks, WP_Block_Template|array $context ): callable
Returns a function that injects the hooked blocks after a given block.
Contents
Description
The returned function can be used as $post_callback
argument to traverse_and_serialize_block(s)
, where it will append the markup for any blocks hooked after
the given block and as its parent’s last_child
, respectively.
This function is meant for internal use only.
Parameters
-
$hooked_blocks
array Required -
An array of blocks hooked to another block.
-
$context
WP_Block_Template|array Required -
A block template, template part, or pattern that the blocks belong to.
Return
callable A function that returns the serialized markup for the given block, including the markup for any hooked blocks after it.
Source
File: wp-includes/blocks.php
.
View all references
function make_after_block_visitor( $hooked_blocks, $context ) {
/**
* Injects hooked blocks after the given block, and returns the serialized markup.
*
* Append the markup for any blocks hooked `after` the given block and as its parent's
* `last_child`, respectively, to the serialized markup for the given block.
*
* @param array $block The block to inject the hooked blocks after. Passed by reference.
* @param array $parent_block The parent block of the given block. Passed by reference. Default null.
* @param array $next The next sibling block of the given block. Default null.
* @return string The serialized markup for the given block, with the markup for any hooked blocks appended to it.
*/
return function ( &$block, &$parent_block = null, $next = null ) use ( $hooked_blocks, $context ) {
$markup = '';
$relative_position = 'after';
$anchor_block_type = $block['blockName'];
$hooked_block_types = isset( $hooked_blocks[ $anchor_block_type ][ $relative_position ] )
? $hooked_blocks[ $anchor_block_type ][ $relative_position ]
: array();
/** This filter is documented in wp-includes/blocks.php */
$hooked_block_types = apply_filters( 'hooked_block_types', $hooked_block_types, $relative_position, $anchor_block_type, $context );
foreach ( $hooked_block_types as $hooked_block_type ) {
$markup .= get_comment_delimited_block_content( $hooked_block_type, array(), '' );
}
if ( $parent_block && ! $next ) {
// Candidate for last-child insertion.
$relative_position = 'last_child';
$anchor_block_type = $parent_block['blockName'];
$hooked_block_types = isset( $hooked_blocks[ $anchor_block_type ][ $relative_position ] )
? $hooked_blocks[ $anchor_block_type ][ $relative_position ]
: array();
/** This filter is documented in wp-includes/blocks.php */
$hooked_block_types = apply_filters( 'hooked_block_types', $hooked_block_types, $relative_position, $anchor_block_type, $context );
foreach ( $hooked_block_types as $hooked_block_type ) {
$markup .= get_comment_delimited_block_content( $hooked_block_type, array(), '' );
}
}
return $markup;
};
}
Hooks
-
apply_filters( 'hooked_block_types',
string[] $hooked_block_types ,string $relative_position ,string $anchor_block_type ,WP_Block_Template|array $context ) -
Filters the list of hooked block types for a given anchor block type and relative position.
Changelog
Version | Description |
---|---|
6.4.0 | Introduced. |