wpseek.com
A WordPress-centric search engine for devs and theme authors



make_after_block_visitor › WordPress Function

Since6.4.0
Deprecatedn/a
make_after_block_visitor ( $hooked_blocks, $context, $callback = 'insert_hooked_blocks' )
Access:
  • private
Parameters: (3)
  • (array) $hooked_blocks An array of blocks hooked to another block.
    Required: Yes
  • (WP_Block_Template|WP_Post|array) $context A block template, template part, `wp_navigation` post object, or pattern that the blocks belong to.
    Required: Yes
  • (callable) $callback A function that will be called for each block to generate the markup for a given list of blocks that are hooked to it. Default: 'insert_hooked_blocks'.
    Required: No
    Default: 'insert_hooked_blocks'
Returns:
  • (callable) A function that returns the serialized markup for the given block, including the markup for any hooked blocks after it.
Defined at:
Codex:
Change Log:
  • 6.5.0

Returns a function that injects the hooked blocks after a given block.

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.


Source

function make_after_block_visitor( $hooked_blocks, $context, $callback = 'insert_hooked_blocks' ) {
	/**
	 * 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, $callback ) {
		$markup = call_user_func_array(
			$callback,
			array( &$block, 'after', $hooked_blocks, $context )
		);

		if ( $parent_block && ! $next ) {
			// Candidate for last-child insertion.
			$markup .= call_user_func_array(
				$callback,
				array( &$parent_block, 'last_child', $hooked_blocks, $context )
			);
		}

		return $markup;
	};
}