全部, 我正在使用以下代码来获取所有已创建的wordpress菜单:
$menus = wp_get_nav_menus();
我知道我想要使用的菜单的ID。基于菜单ID,我想获得该菜单中的页面以及基于所选菜单ID的相应导航标签。我怎么能这样做?
我实际上发现了这个:
$menu_items = wp_get_nav_menu_items($options['menu_choice']);
在该示例中,$ options ['menu_choice']是所选的菜单ID,但我真正想要的是给出永久链接值。我能从中得到这个吗?
提前感谢您的帮助!
答案 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>