Brad Bansner
asked on
Use wp_nav_menu in WordPress to get submenu list by menu ID number
This code:
...gets the title of the current page and passes it to the wp_nav_menu function, within the Main Navigation menu, to get that page's submenu.
It works, until there are two pages with the same title. In my site, there are two pages called Services, each located under different parent menus, so the code fails.
How could the above code be modified to work based on the current page's ID number instead of page title? Or is there a better way than that?
Thank you.
$currentmenu=get_the_title($post->ID);
$args=array('menu' => 'Main Navigation', 'submenu' => $currentmenu);
wp_nav_menu($args);
...gets the title of the current page and passes it to the wp_nav_menu function, within the Main Navigation menu, to get that page's submenu.
It works, until there are two pages with the same title. In my site, there are two pages called Services, each located under different parent menus, so the code fails.
How could the above code be modified to work based on the current page's ID number instead of page title? Or is there a better way than that?
Thank you.
ASKER
I did try that, and it fails. Apparently you can't just pass an ID to 'submenu'.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Well, that helps actually. I made a mistake... there is some custom PHP involved, as shown at this URL:
http://www.ordinarycoder.com/wordpress-wp_nav_menu-show-a-submenu-only/
I believe that is what I used. Sorry, I build this quite a while ago, and must have forgotten there was some customization involved.
http://www.ordinarycoder.com/wordpress-wp_nav_menu-show-a-submenu-only/
I believe that is what I used. Sorry, I build this quite a while ago, and must have forgotten there was some customization involved.
ASKER
So probably in addition to passing the ID, I need to modify some of this:
function submenu_limit($items, $args){
if (empty($args->submenu)) return $items;
$parent_id=array_pop(wp_filter_object_list($items, array('title' => $args->submenu), 'and', 'ID'));
$children=submenu_get_children_ids($parent_id, $items);
foreach ($items as $key => $item){
if (!in_array($item->ID, $children)) unset($items[$key]);
}
return $items;
}
function submenu_get_children_ids($id, $items){
$ids=wp_filter_object_list($items, array('menu_item_parent' => $id), 'and', 'ID');
foreach ($ids as $id){
$ids=array_merge($ids, submenu_get_children_ids($id, $items));
}
return $ids;
}
ASKER
I found a plugin, the script was not working.
$args=array('menu' => 'Main Navigation', 'submenu' => $post->ID);