Как мне получить пункты меню только с одного уровня?


Функция WordPress wp_get_nav_menu_items возвращает вложенную навигацию всего моего сайта и все. Теперь, если я хочу получить навигационное меню только для одного "уровня" этой вложенной навигации, как мне это сделать?

Author: Brian Fegter, 2012-02-13

2 answers

Вы пытаетесь отобразить сообщения сверху вниз на определенное количество уровней?

Если это так, используйте wp_nav_menu. У него есть аргумент "глубина", созданный специально для этого, и он работает болезненно.

wp_nav_menu(array('depth' => 2));

Также, http://codex.wordpress.org/Function_Reference/wp_nav_menu

 4
Author: Vlad Ionescu, 2012-02-14 19:30:07

Если вы хотите вернуть массив элементов (не выводить, как wp_nav_menu), вы можете попробовать следующее:

$menu_name = 'your_menu_location';
if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
    $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

    $menu_items = wp_get_nav_menu_items($menu->term_id);

    foreach ( (array) $menu_items as $key => $menu_item ) {
        if ($menu_item->menu_item_parent != 0 ) continue;
        $title = $menu_item->title;
        $url = $menu_item->url;

        DO WHAT EVER YOU WANT HERE 

    }
}   // endif has nav menu or not
 5
Author: Tran Cuong, 2013-05-14 01:19:19