Я сделал следующую функцию для темы WordPress:
function spacepress_get_menu() {
if ( has_nav_menu( 'header' ) ) {
$navbar_items = wp_get_nav_menu_items( 'header' );
$child_items = [];
foreach ( $navbar_items as $key => $item ) {
if ( $item->menu_item_parent ) {
array_push( $child_items, $item );
unset( $navbar_items[ $key ] );
}
}
foreach ( $navbar_items as $item ) {
foreach ( $child_items as $key => $child ) {
if ( $child->menu_item_parent == $item->post_name ) {
if ( ! $item->child_items ) {
$item->child_items = [];
}
array_push( $item->child_items, $child );
unset( $child_items[ $key ] );
}
}
}
echo htmlspecialchars( json_encode( $child_items ), ENT_QUOTES, 'UTF-8' );
}
}
Однако отображение массива в конце пусто. Это почему? Я чувствую, что мне нужно «дождаться» окончания цикла foreach до 100 *, но я не знаю, как это сделать.