block_core_navigation_add_directives_to_submenu()WP 1.0

Add Interactivity API directives to the navigation-submenu and page-list blocks markup using the Tag Processor The final HTML of the navigation-submenu and the page-list blocks will look similar to this:

<li class="has-child" data-wp-context='{ "core": { "navigation": { "isMenuOpen": false, "overlay": false } } }' data-wp-effect="effects.core.navigation.initMenu" data-wp-on.keydown="actions.core.navigation.handleMenuKeydown" data-wp-on.focusout="actions.core.navigation.handleMenuFocusout" > <button

class="wp-block-navigation-submenu__toggle"
data-wp-on.click="actions.core.navigation.openMenu"
data-wp-bind.aria-expanded="context.core.navigation.isMenuOpen"

</button> <span>Title</span> <ul class="wp-block-navigation__submenu-container">

SUBMENU ITEMS

</ul> </li>

Хуков нет.

Возвращает

Строку. Submenu markup with the directives injected.

Использование

block_core_navigation_add_directives_to_submenu( $w, $block_attributes );
$w(строка) (обязательный)
Markup of the navigation block.
$block_attributes(массив) (обязательный)
Block attributes.

Код block_core_navigation_add_directives_to_submenu() WP 6.3.1

function block_core_navigation_add_directives_to_submenu( $w, $block_attributes ) {
	while ( $w->next_tag(
		array(
			'tag_name'   => 'LI',
			'class_name' => 'has-child',
		)
	) ) {
		// Add directives to the parent `<li>`.
		$w->set_attribute( 'data-wp-interactive', true );
		$w->set_attribute( 'data-wp-context', '{ "core": { "navigation": { "isMenuOpen": { "click": false, "hover": false }, "overlay": false } } }' );
		$w->set_attribute( 'data-wp-effect', 'effects.core.navigation.initMenu' );
		$w->set_attribute( 'data-wp-on--focusout', 'actions.core.navigation.handleMenuFocusout' );
		$w->set_attribute( 'data-wp-on--keydown', 'actions.core.navigation.handleMenuKeydown' );
		if ( ! isset( $block_attributes['openSubmenusOnClick'] ) || false === $block_attributes['openSubmenusOnClick'] ) {
			$w->set_attribute( 'data-wp-on--mouseenter', 'actions.core.navigation.openMenuOnHover' );
			$w->set_attribute( 'data-wp-on--mouseleave', 'actions.core.navigation.closeMenuOnHover' );
		}

		// Add directives to the toggle submenu button.
		if ( $w->next_tag(
			array(
				'tag_name'   => 'BUTTON',
				'class_name' => 'wp-block-navigation-submenu__toggle',
			)
		) ) {
			$w->set_attribute( 'data-wp-on--click', 'actions.core.navigation.toggleMenuOnClick' );
			$w->set_attribute( 'data-wp-bind--aria-expanded', 'selectors.core.navigation.isMenuOpen' );
		};

		// Iterate through subitems if exist.
		block_core_navigation_add_directives_to_submenu( $w, $block_attributes );
	}
	return $w->get_updated_html();
};