block_core_navigation_parse_blocks_from_menu_items() – Turns menu item data into a nested array of parsed blocks
You appear to be a bot. Output may be restricted
Description
Turns menu item data into a nested array of parsed blocks
Usage
$array = block_core_navigation_parse_blocks_from_menu_items( $menu_items, $menu_items_by_parent_id );
Parameters
- $menu_items
- ( array ) required – An array of menu items that represent an individual level of a menu.
- $menu_items_by_parent_id
- ( array ) required – An array keyed by the id of the parent menu where each element is an array of menu items that belong to that parent.
Returns
array An array of parsed block data.
Source
File name: wordpress/wp-includes/blocks/navigation.php
Lines:
1 to 40 of 40
function block_core_navigation_parse_blocks_from_menu_items( $menu_items, $menu_items_by_parent_id ) { if ( empty( $menu_items ) ) { return array(); } $blocks = array(); foreach ( $menu_items as $menu_item ) { $class_name = ! empty( $menu_item->classes ) ? implode( ' ', (array) $menu_item->classes ) : null; $id = ( null !== $menu_item->object_id && 'custom' !== $menu_item->object ) ? $menu_item->object_id : null; $opens_in_new_tab = null !== $menu_item->target && '_blank' === $menu_item->target; $rel = ( null !== $menu_item->xfn && '' !== $menu_item->xfn ) ? $menu_item->xfn : null; $kind = null !== $menu_item->type ? str_replace( '_', '-', $menu_item->type ) : 'custom'; $block = array( 'blockName' => isset( $menu_items_by_parent_id[ $menu_item->ID ] ) ? 'core/navigation-submenu' : 'core/navigation-link', 'attrs' => array( 'className' => $class_name, 'description' => $menu_item->description, 'id' => $id, 'kind' => $kind, 'label' => $menu_item->title, 'opensInNewTab' => $opens_in_new_tab, 'rel' => $rel, 'title' => $menu_item->attr_title, 'type' => $menu_item->object, 'url' => $menu_item->url, ), ); $block['innerBlocks'] = isset( $menu_items_by_parent_id[ $menu_item->ID ] ) ? block_core_navigation_parse_blocks_from_menu_items( $menu_items_by_parent_id[ $menu_item->ID ], $menu_items_by_parent_id ) : array(); $block['innerContent'] = array_map( 'serialize_block', $block['innerBlocks'] ); $blocks[] = $block; } return $blocks; }