block_core_navigation_add_directives_to_submenu()
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() 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(); };