根据id显示wp_NAV_MENU中的特定菜单项

时间:2011-05-18 作者:cchiera

我有一个wp\\U nav\\U菜单“主菜单”,如下所示:

顶层(菜单项1)子项(菜单项3)子项A子项B子项A子项A子项A.1子项项目C然后在我的模板中,我希望能够回显wp\\U nav\\U菜单主菜单子项目,例如顶层的id为menu-item-3,其中menu-item-3是当前的菜单顶部项。

所以是这样的:(但这当然会起作用)

wp_nav_menu( array(\'menu\' => \'Main Menu\' \'menu-item-id\' => \'3\' ));
这将返回:

。提前谢谢!

请注意,这不是http://wordpress.stackexchange.com/questions/2802/display-a-portion-branch-of-the-menu-tree-using-wp-nav-menu“。虽然该页面有几个类似的答案,但在当前版本的WordPress中,没有一个能像预期的那样工作。它显示在特定的子菜单项及其所有子菜单项、子菜单项及其子菜单项等上(无限深度)。

3 个回复
SO网友:Ian Dunn

如果我正确理解您想要什么,您可以使用CSS来实现这一点。您将正常调用wp\\u nav\\u menu并让它生成所有链接,但随后您将隐藏除当前页面的子菜单之外的所有链接。

你的CSS看起来像这样,

#sidebar ul.menu li
{
    display: none;
}

    #sidebar ul.menu li.current-page-parent,
    #sidebar ul.menu li.current-page-parent ul,
    #sidebar ul.menu li.current-page-parent ul.li
    {
        display: block;
    }
Update: 你可以退房http://thataboycreative.com 看看我以前在哪里用过这个的例子。下面是该示例中的相关CSS:

ul.sub-menu
{
    display: none;
}

    #menu-main-navigation > li.current-menu-item ul.sub-menu,
    #menu-main-navigation > li.current-menu-ancestor ul.sub-menu
    {
        display: block;
    }

SO网友:Travis Hoglund

我为此创建了一个插件-请确保将ID作为字符串而不是整数传入。请为我的插件打分-这是我的第一个插件!:)

Download Here

SO网友:Ian Dunn

我做这件事的另一种方法是直接抓取帖子,而不是使用wp\\u nav\\u菜单。这是基于实际的页面结构,而不是菜单。

功能。php:

function __construct()
{
    $this->currentPageID    = $this->getCurrentPageID();
    $this->sectionChildren    = $this->getSectionChildren();
}

function getCurrentPageID()
{
    $currentPage = $_SERVER[\'REQUEST_URI\'];

    if($currentPage == \'/\')
        $currentPage = \'/home\';
    $currentPage = get_page_by_path($currentPage);

    if($currentPage)
        return $currentPage->ID;
    else
        return -1;
}

function getSectionID()
{
    global $wpdb;

    $currentSectionID = $wpdb->get_var("
        SELECT post_parent
        FROM ". $wpdb->posts ."
        WHERE ID = ". $this->currentPageID
    );

    if($currentSectionID == 0)
        return $this->currentPageID;
    else
        return $currentSectionID;
}

function getSectionChildren()
{
    global $wpdb;

    $children = $wpdb->get_results("
        SELECT ID, post_title
        FROM ". $wpdb->posts ."
        WHERE
            post_parent = ". $this->getSectionID() ." AND
            post_type = \'page\' AND
            post_status = \'publish\'
    ", ARRAY_A);

    return $children;
}
侧栏。php:

<ul id="sub-navigation">
    <?php foreach($dc->sectionChildren as $c) : ?>
        <li <?php if($dc->currentPageID == $c[\'ID\']) echo \'class="active"\'; ?>><a href="<?php echo get_permalink($c[\'ID\']); ?>"><?php echo $c[\'post_title\']; ?></a></li>
    <?php endforeach; ?>
</ul>

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph