【问题标题】:wp_nav_menu only show the first 5 menu itemswp_nav_menu 仅显示前 5 个菜单项
【发布时间】:2014-01-14 19:51:13
【问题描述】:

如何限制 wp_nav_menu 拉入的菜单项数量?即使实际菜单中有 20 个,我也只想拉入前 5 个菜单项。客户将选择订单,在所有其他地方都可以显示完整的菜单。

这是我正在尝试的,但它似乎不起作用:'-(

wp_nav_menu(array('theme_location' => 'quicklinks', 'menu_item_start' => 1, 'menu_item_end' => 5) );

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    您能否在管理中创建一个单独的菜单,仅包含这五个项目,按照客户想要的顺序排列?然后您可以将该菜单附加到该位置,并将另一个附加到其他位置。

    【讨论】:

    • 这是一个选项,是的。不过,这需要双重输入和更新。这是我最后的手段。感谢您花时间回答。
    • 是的,我通常不建议重复,但有时替代方案甚至更复杂。希望其他人会有更好的答案。
    • @campatsky 你可以使用custom menu walker
    【解决方案2】:

    这是我的有效解决方案(您需要修改“primary_navigation”):

    function max_nav_items($sorted_menu_items, $args){
        if($args->theme_location != "primary_navigation") return $sorted_menu_items;
        $items = array();
        foreach($sorted_menu_items as $item){
            if($item->menu_item_parent != 0) continue;
            $items[] = $item;
        }
        $items = array_slice($items,0,8);
        foreach($sorted_menu_items as $key=>$one_item){
            if($one_item->menu_item_parent == 0 && !in_array($one_item,$items)){
                unset($sorted_menu_items[$key]);
            }
        }
        return $sorted_menu_items;
    }
    add_filter("wp_nav_menu_objects","max_nav_items",10,2);
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 2013-02-23
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多