ฉันพยายามแยกการนำทางของฉันออกเป็น 3 แถบนำทางเดียว (ระดับ 1 ระดับ 2 และระดับ 3 +) สามเพราะพวกเขาถูกแยกออกจากเว็บไซต์และพวกเขาควรปรากฏเฉพาะขึ้นอยู่กับหน้าปัจจุบัน
-0-------1--------2-------3+- level/depth
Home
 |
 |\___ Lobby
 |
 |\___ Projects
 |       |\___ Project A
 |       |       |\___ Review
 |       |       |\___ Comments
 |       |       \____ Download
 |       \____ Project B
 |               |\___ Review
 |               |\___ Comments
 |               \____ Download
 |\___ Blog
 |
 \____ About
         |\___ Legal
         \____ Contact
navbar แรกที่มีระดับ 1 จะมองเห็นได้เสมอ navbar ที่สอง (ระดับ 2) ต่อเมื่อ im บนเพจพาเรนต์ที่เกี่ยวข้องเท่านั้น เช่นเดียวกับแถบนำทางที่สาม (ระดับ 3+ บวกเนื่องจากแถบนำทางนี้จะมีหน้าย่อยและหน้าย่อย ... ของระดับ 3)
กล่าวโดยย่อ: ฉันต้องการแสดงเมนูพาเรนต์ทั้งหมดใน navbars ของพวกเขาและแสดงเฉพาะรายการย่อยของเพจปัจจุบัน
สิ่งที่ฉันพยายาม:
function my_nav_menu( $args = array() )
{
    $echo = isset( $args['echo'] ) ? (bool)( $args['echo'] ) : true;
    $args['echo'] = false;
    add_filter( 'wp_get_nav_menu_items' , 'my_nav_menu_filter' , 666 , 3 );
    $menu = wp_nav_menu( $args );
    remove_filter( 'wp_nav_menu_objects' , 'my_nav_menu_filter' , 666 );
    if( $echo )
        echo $menu;
    else
        return $menu;
}
function my_nav_menu_filter( $items , $menu , $args )
{
    //var_dump( $args );
    $navLevel = isset( $args['navlevel'] ) ? (int)( $args['navlevel'] ) : 0;
    //echo 'navlevel = ' . $args['navlevel'] . ' | ' . $navLevel;
    if( $navLevel == 1 )
    {
        foreach( $items as $key => $item )
        {
            if( $item->menu_item_parent != 0 )
                unset( $items[$key] );
        }
    }
    else if( $navLevel == 2 )
    {
        foreach( $items as $key => $item )
        {
            if( $item->menu_item_parent != 0 )
            {
                $page = get_page( $item->menu_item_parent );
                if( $page->menu_item_parent == 0 )
                    continue;
            }
            unset( $items[$key] );
        }
    }
    else if( $navLevel == 3 )
    {
        foreach( $items as $key => $item )
        {
            if( $item->menu_item_parent != 0 )
            {
                $page = get_page( $item->menu_item_parent );
                if( $page->menu_item_parent != 0 )
                    continue;
            }
            unset( $items[$key] );
        }
    }
    else
    {
        //var_dump( $items );
    }
    return $items;
}
เรียกสิ่งนี้ในส่วนหัวของฉัน php:
<?php my_nav_menu( array( 'echo' => false , 'navlevel' => 1 ) ); ?>
อย่างไรก็ตาม$argsถูกตั้งค่าเป็นค่าเริ่มต้นและรายการที่กำหนดเองของฉันnavlevelไม่แสดงในตัวกรอง
ฉันจะแยก navbar ตามที่อธิบายไว้ได้อย่างไร ฉันจะตั้งค่าผู้ร่วมกำหนดเองได้$argsอย่างไร