A WordPress-centric search engine for devs and theme authors

block_core_navigation_insert_hooked_blocks › WordPress Function

block_core_navigation_insert_hooked_blocks ( $inner_blocks, $post )
Parameters: (2)
  • (array) $inner_blocks Parsed inner blocks of a Navigation block.
    Required: Yes
  • (WP_Post) $post `wp_navigation` post object corresponding to the block.
    Required: Yes
  • (string) Serialized inner blocks in mock Navigation block wrapper, with hooked blocks inserted, if any.
Defined at:

Insert hooked blocks into a Navigation block.

Given a Navigation block's inner blocks and its corresponding wp_navigation post object, this function inserts hooked blocks into it, and returns the serialized inner blocks in a mock Navigation block wrapper. If there are any hooked blocks that need to be inserted as the Navigation block's first or last children, the wp_navigation post's _wp_ignored_hooked_blocks meta is checked to see if any of those hooked blocks should be exempted from insertion.


function block_core_navigation_insert_hooked_blocks( $inner_blocks, $post ) {
	$mock_navigation_block = block_core_navigation_mock_parsed_block( $inner_blocks, $post );
	$hooked_blocks         = get_hooked_blocks();
	$before_block_visitor  = null;
	$after_block_visitor   = null;

	if ( ! empty( $hooked_blocks ) || has_filter( 'hooked_block_types' ) ) {
		$before_block_visitor = make_before_block_visitor( $hooked_blocks, $post, 'insert_hooked_blocks' );
		$after_block_visitor  = make_after_block_visitor( $hooked_blocks, $post, 'insert_hooked_blocks' );

	return traverse_and_serialize_block( $mock_navigation_block, $before_block_visitor, $after_block_visitor );