首页 > 解决方案 > 是否可以在主菜单上显示一些有限的菜单列表?

问题描述

我有一个主菜单,代码是

<nav id="site-navigation" class="main-navigation float-right">
 <?php wp_nav_menu( array( 'theme_location' => 'menu-1','menu_id'=> 'primary-menu') );?>
 </nav>

现在我在左侧边栏使用相同的菜单

<nav id="left-side-menu" class="main-navigation">
     <?php wp_nav_menu( array( 'theme_location' => 'menu-1', 'menu_id' => 'left-primary-menu',) );?>        
 </nav>

我有 15 个菜单列表的总数,但我必须在我的菜单上显示 8 个primary-menu,所有菜单列表都将显示在left-primary-menu.

那么是否可以在主菜单上显示一些有限的菜单列表?

标签: wordpressmenu

解决方案


请试试这个功能

//Used This Function for Register Menus
function twentytwenty_menus() {
    $locations = array(
        'primary'  => __( 'Desktop Horizontal Menu', 'twentytwenty' ),
        'leftsidebar'   => __( 'Slidebar Menu', 'twentytwenty' ),   
    );
    register_nav_menus( $locations );
}
add_action( 'init', 'twentytwenty_menus' );


//Used This Function for set Limit of Menu Items
add_filter( 'wp_nav_menu_objects', 'mytheme_menufilter', 10, 2 );
function mytheme_menufilter($items, $args) {
    // want our MAINMENU to have MAX of 7 items
    if ( $args->theme_location == 'primary' ) {
        $toplinks = 0;
        foreach ( $items as $k => $v ) {
            if ( $v->menu_item_parent == 0 ) {
                // count how many top-level links we have so far...
                $toplinks++;
            }
            // if we've passed our max # ...
            if ( $toplinks > 2 ) {
                unset($items[$k]);
            }
        }
    }
    return $items;
}

推荐阅读