从Wordpress获取菜单值

use*_*676 6 php wordpress

全部,我使用以下代码来获取创建的所有已定义的wordpress菜单:

$menus = wp_get_nav_menus();
Run Code Online (Sandbox Code Playgroud)

我知道我想要使用的菜单的ID.基于菜单ID,我想获得该菜单中的页面以及基于所选菜单ID的相应导航标签.我怎么能这样做呢?

我实际发现了这个:

$menu_items = wp_get_nav_menu_items($options['menu_choice']);
Run Code Online (Sandbox Code Playgroud)

在该示例中,$ options ['menu_choice']是所选的菜单ID,但我真正想要的是给出永久链接值.我能从中得到这个吗?

在此先感谢您的帮助!

kpo*_*hin 8

这正是你想要的.

$menu_name = 'menu-id'; //e.g. primary-menu; $options['menu_choice'] in your case

if (($locations = get_nav_menu_locations()) && isset($locations[$menu_name])) {
    $menu = wp_get_nav_menu_object($locations[$menu_name]);
    $menu_items = wp_get_nav_menu_items($menu->term_id);
}
Run Code Online (Sandbox Code Playgroud)

现在$ menu_items是一个包含所有菜单项的所有数据的对象.因此,您可以使用foreach循环检索必要的数据.

foreach ($menu_items as $menu_item) {
    $id = $menu_item->ID;
    $title = $menu_item->title;
    $url = $menu_item->url;

    if ($parent_id = $menu_item->menu_item_parent) {
        //the element has a parent with id $parent_id, so you can build a hierarchically menu tree
    }
    else {
        //the element doesn't have a parent
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在官方网站上找到有关此问题的更多有趣信息,例如orderby选项:http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items


小智 3

要使用以下函数访问菜单中每个项目的标题和 url wp_get_nav_menu_items()

$menu_items = wp_get_nav_menu_items( $options['menu_choice'] );
foreach ( (array) $menu_items as $key => $menu_item ) {
    $title = $menu_item->title;
    $url = $menu_item->url;
}
Run Code Online (Sandbox Code Playgroud)