您如何管理WP中的大型菜单层次结构?

时间:2014-07-31 作者:Steven

有没有人在菜单层次结构相当大的网站上工作过
深度不超过3级,但超过40个菜单项?

如果您只在顶部菜单中列出第一级项目,而没有下拉列表,并且希望在站点的左侧部分显示子项,您将如何做到这一点?

据我所知,仍然没有像getChildren() 当前选定菜单项的。到目前为止,我唯一的解决方案是get_page_children() - 但这些子项来自当前页面,而不是菜单层次结构。

2 个回复
SO网友:Emil Nikolov

WP core的一个问题是,层次结构不会显示在“外观”>“菜单”>“产品类别”选项卡中。在该票据中,您可以找到解决方法:https://core.trac.wordpress.org/ticket/18282

对于我来说,这个插件部分工作(在左侧显示层次结构),在上面的标签中讨论:https://core.trac.wordpress.org/attachment/ticket/18282/preserve-page-and-taxonomy-hierarchy.php

你可以download 它位于页面底部upload in 你的"plugins" folder. 然后转到WP Dashboad>插件>Activate

现在,我可以在“外观”>“菜单”>“产品类别”选项卡>“全部”中查看层次结构。然后我可以“全选”并将它们添加到我的菜单中。但是,它添加了类别,并将我在“产品”>“类别”中设置的原始层次结构放在一起。不过,它们并不像WordPress(最新版本)的默认状态那样混乱。

SO网友:gdaniel

不久前,当我遇到类似问题时,我在网上找到了这个过滤器。我想显示在wordpress后端的外观->菜单中设置的所有子页面。我只想显示当前页面的子级,而不使用get\\u children。I would give credit to whoever wrote this beauty, but I can\'t find the source.

此过滤器为功能wp\\U nav\\U菜单添加了一个额外选项。它允许您添加参数submenu. 唯一的缺陷是您需要使用父标题(而不是ID)进行选择,但您可以从页面标题中获得。

    add_filter( \'wp_nav_menu_objects\', \'submenu_limit\', 10, 2 );

    function submenu_limit( $items, $args ) {

    if ( empty($args->submenu) )
        return $items;

    $parent_id = array_pop( wp_filter_object_list( $items, array( \'title\' => $args->submenu ), \'and\', \'ID\' ) );
    $children  = submenu_get_children_ids( $parent_id, $items );

    foreach ( $items as $key => $item ) {

        if ( ! in_array( $item->ID, $children ) )
            unset($items[$key]);
    }

    return $items;
}

    function submenu_get_children_ids( $id, $items ) {

        $ids = wp_filter_object_list( $items, array( \'menu_item_parent\' => $id ), \'and\', \'ID\' );

    foreach ( $ids as $id ) {

        $ids = array_merge( $ids, submenu_get_children_ids( $id, $items ) );
    }

    return $ids;
}
这是我在侧边栏中使用它的方式:

<?php 

//Get parent title
$menu_title = empty($post->post_parent) ? get_the_title( $post->ID ) : get_the_title( $post->post_parent );

wp_nav_menu(array(\'menu\' => \'main-menu\',\'submenu\' => $menu_title)); 


?>

结束

相关推荐

How to add taxonomy in menus?

书籍(自定义帖子类型)小说(税)科学(税)历史(税)--书籍体裁(税务)小说(术语)科学(学期)历史(学期)以下哪一项是做这件事的“好方法”?对于前一个(这是我目前在管理菜单中的功能,我为每个功能都提供了“register\\u taxonomy”功能),我无法选择要在菜单中显示的“Tax”。而对于后者,我可以将它们添加到菜单中,只需要一个“register\\u taxonomy”函数。