Я пытаюсь объединить несколько массивов с циклом foreach. wp_get_nav_menu_items () Функция возвращает объект массива путем заполнения имени меню. С помощью моего цикла я хочу добавить все элементы массива из 3 меню вместе.
$menus = array( 'menu 1', 'menu 2', 'menu 3' );
foreach( $menus as $key => $menu ) {
$menu_object = wp_get_nav_menu_items( esc_attr( $menu ) );
$menu_objects[] = $menu_object;
}
Но с моим текущим кодом я получаю следующий результат:
Array
(
[0] => Array
(
[0] => WP_Post Object
(
[ID] => 397
)
)
[1] => Array
(
[0] => WP_Post Object
(
[ID] => 112
)
)
)
И мне нужно это:
Array
(
[0] => WP_Post Object
(
[ID] => 397
)
[1] => WP_Post Object
(
[ID] => 112
)
[2] => WP_Post Object
(
[ID] => 136
)
)
Поэтому я попытался использовать array_merge в цикле, но это не работает.
$menus = array( 'menu 1', 'menu 2', 'menu 3' );
foreach( $menus as $key => $menu ) {
$menu_object = wp_get_nav_menu_items( esc_attr( $menu ) );
$menu_objects = array_merge( $menu_objects, $menu_object );
}
Почему бы просто не изменить эту строку, чтобы получить объект:
$menu_object = wp_get_nav_menu_items( esc_attr( $menu ) );
Попробуйте что-то вроде:
$menu_object = wp_get_nav_menu_items( esc_attr( $menu ) )[0];
Мне нужно было только указать $ menu_objects как массив:
$menus = array( 'menu 1', 'menu 2', 'menu 3' );
$menu_objects = array();
foreach( $menus as $key => $menu ) {
$menu_object = wp_get_nav_menu_items( esc_attr( $menu ) );
$menu_objects = array_merge( $menu_objects, $menu_object );
}