WordPress:使用wp_get_nav_menu_items()时获取当前页面的任何方法?

时间:2015-10-30 19:22:55

标签: wordpress menu

我正在建立一个专门的菜单。通常,我会使用常规菜单功能和自定义导航器,但此特定菜单系统使用其他元素。我仍然希望作者能够编辑实际的菜单,所以我希望它基于常规的WordPress菜单。

$locations = get_nav_menu_locations();
if (isset( $locations[ $menu_name ])){
    $menu_items = wp_get_nav_menu_items($locations[ $menu_name ]);
    if (count($menu_items > 0)){
        foreach ( $menu_items as $key => $menu_item ) {
            $title = $menu_item->title;
            $url = $menu_item->url;
            $select_state = ''; // figure out if this is selected
            $oStr .= '<div class="flyout-menu ' . $select_state . '">';
            $oStr .= "\n";
            $oStr .= '<a href="' . $url . '">' . $title . '</a>';
            $oStr .= '<!-- ID:'.$menu_item->ID . ' object_id:'.$menu_item->object_id . ' thePostID:'.$thePostID . " -->\n";
            $oStr .= '</div>';
            $oStr .= "\n";
        }
    } else {
        $oStr .= '<!-- empty menu -->';
    }    
} else {
    $oStr .= '"' . $menu_name . '" not found.';
}

我想将常规的current_page_item类添加到我的菜单元素中,但是我没有看到wp_get_nav_menu_items()返回的数组中的任何内容表明这一点。

我在网上发现了一些尝试,但它们都有无效的假设,例如当前页面ID与菜单对象ID匹配。 (仅当菜单指向一个页面时才会出现。)

如果用wp_get_nav_menu_items()无法做到这一点,我会正常渲染菜单并捕获它。然后解析它并构建我的新菜单。但是如果我能从wp_get_nav_menu_items()获取数组会更简单。

那么有没有办法在不使用wp_nav_menu()的情况下获取哪个菜单项应该有current_page_item类?

0 个答案:

没有答案