WP_Navigation_Block_Renderer::get_inner_blocks_htmlprivate staticWP 6.5.0

Returns the html for the inner blocks of the navigation block.

Method of the class: WP_Navigation_Block_Renderer{}

No Hooks.

Returns

String. Returns the html for the inner blocks of the navigation block.

Usage

$result = WP_Navigation_Block_Renderer::get_inner_blocks_html( $attributes, $inner_blocks );
$attributes(array) (required)
The block attributes.
$inner_blocks(WP_Block_List) (required)
The list of inner blocks.

Changelog

Since 6.5.0 Introduced.

WP_Navigation_Block_Renderer::get_inner_blocks_html() code WP 6.9.1

private static function get_inner_blocks_html( $attributes, $inner_blocks ) {
	$has_submenus   = static::has_submenus( $inner_blocks );
	$is_interactive = static::is_interactive( $attributes, $inner_blocks );

	$style                = static::get_styles( $attributes );
	$class                = static::get_classes( $attributes );
	$container_attributes = get_block_wrapper_attributes(
		array(
			'class' => 'wp-block-navigation__container ' . $class,
			'style' => $style,
		)
	);

	$inner_blocks_html = '';
	$is_list_open      = false;

	foreach ( $inner_blocks as $inner_block ) {
		$inner_block_markup = static::get_markup_for_inner_block( $inner_block );
		$p                  = new WP_HTML_Tag_Processor( $inner_block_markup );
		$is_list_item       = $p->next_tag( 'LI' );

		if ( $is_list_item && ! $is_list_open ) {
			$is_list_open       = true;
			$inner_blocks_html .= sprintf(
				'<ul %1$s>',
				$container_attributes
			);
		}

		if ( ! $is_list_item && $is_list_open ) {
			$is_list_open       = false;
			$inner_blocks_html .= '</ul>';
		}

		$inner_blocks_html .= $inner_block_markup;
	}

	if ( $is_list_open ) {
		$inner_blocks_html .= '</ul>';
	}

	// Add directives to the submenu if needed.
	if ( $has_submenus && $is_interactive ) {
		$tags              = new WP_HTML_Tag_Processor( $inner_blocks_html );
		$inner_blocks_html = block_core_navigation_add_directives_to_submenu( $tags, $attributes );
	}

	return $inner_blocks_html;
}