全部,我使用以下代码来获取创建的所有已定义的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,但我真正想要的是给出永久链接值.我能从中得到这个吗?
在此先感谢您的帮助!
这正是你想要的.
$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)