WP_Navigation_Block_Renderer::disable_overlay_menu_for_nested_navigation_blocks
Recursively disables overlay menu for navigation blocks within overlay blocks. Prevents nested overlays (inception).
Метод класса: WP_Navigation_Block_Renderer{}
Хуков нет.
Возвращает
array. Modified blocks with overlayMenu set to 'never' for navigation blocks.
Использование
$result = WP_Navigation_Block_Renderer::disable_overlay_menu_for_nested_navigation_blocks( $blocks );
- $blocks(массив) (обязательный)
- Array of parsed block arrays.
Список изменений
| С версии 6.5.0 | Введена. |
Код WP_Navigation_Block_Renderer::disable_overlay_menu_for_nested_navigation_blocks() WP Navigation Block Renderer::disable overlay menu for nested navigation blocks WP 7.1.2
private static function disable_overlay_menu_for_nested_navigation_blocks( $blocks ) {
if ( empty( $blocks ) || ! is_array( $blocks ) ) {
return $blocks;
}
foreach ( $blocks as &$block ) {
if ( ! isset( $block['blockName'] ) ) {
continue;
}
// If this is a navigation block, disable its overlay menu.
if ( 'core/navigation' === $block['blockName'] ) {
if ( ! isset( $block['attrs'] ) ) {
$block['attrs'] = array();
}
$block['attrs']['overlayMenu'] = 'never';
// Mark this as a nested navigation within an overlay template part
// so we can handle its rendering differently.
$block['attrs']['_isWithinOverlayTemplatePart'] = true;
}
// Recursively process inner blocks.
if ( ! empty( $block['innerBlocks'] ) && is_array( $block['innerBlocks'] ) ) {
$block['innerBlocks'] = static::disable_overlay_menu_for_nested_navigation_blocks( $block['innerBlocks'] );
}
}
return $blocks;
}