从Wordpress获取菜单值

时间:2012-03-14 19:59:59

标签: php wordpress

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

$menus = wp_get_nav_menus();

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

我实际上发现了这个:

$menu_items = wp_get_nav_menu_items($options['menu_choice']);

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

提前感谢您的帮助!

5 个答案:

答案 0 :(得分: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);
}

现在$ 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
    }
}

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

答案 1 :(得分:3)

使用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;
}

答案 2 :(得分:2)

您想要显示特定菜单吗?为什么不使用更简单的函数wp_nav_menu,并传递一个你想要的菜单ID的参数?在下一个例子中用$ menu_ID替换你的menu_id:

<?php 
$menu_args = array('menu' => $menu_ID );
wp_nav_menu( $menu_args ); 
?> 

答案 3 :(得分:1)

要获取帖子ID,您必须使用此功能将其拉出来:

$ id = get_post_meta($ menu_item-&gt; ID,'_ menu_item_object_id',true);

否则,id将是wordpress用于菜单的nav_menu自定义类型帖子。 $ url的goese相同,你可以使用get_permalink($ id);

来调用它

答案 4 :(得分:0)

<pre> 
$menu_ID = '195'; // 195 is a menu id this id you can see 
http://example.com/wp-admin/nav-menus.php?action=edit&menu=195
$menu_args = array('menu' => $menu_ID );
wp_nav_menu( $menu_args );  
</pre>