WP_Classic_To_Block_Menu_Converter::to_blocks()private staticWP 6.3.0

Turns menu item data into a nested array of parsed blocks

Метод класса: WP_Classic_To_Block_Menu_Converter{}

Хуков нет.

Возвращает

Массив. An array of parsed block data.

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

$result = WP_Classic_To_Block_Menu_Converter::to_blocks( $menu_items, $menu_items_by_parent_id );
$menu_items(массив) (обязательный)
An array of menu items that represent an individual level of a menu.
$menu_items_by_parent_id(массив) (обязательный)
An array keyed by the id of the parent menu where each element is an array of menu items that belong to that parent.

Список изменений

С версии 6.3.0 Введена.

Код WP_Classic_To_Block_Menu_Converter::to_blocks() WP 6.6.2

private static function to_blocks( $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 ] )
		? static::to_blocks( $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;
}