The get_nav_menu_locations() WordPress PHP function retrieves all registered navigation menu locations and the menus assigned to them.
Usage
$locations = get_nav_menu_locations();
Parameters
- None
More information
See WordPress Developer Resources: get_nav_menu_locations()
Examples
Display all menu locations and their assigned menus
This code snippet displays all registered menu locations and the menus assigned to them.
$locations = get_nav_menu_locations(); foreach ($locations as $location => $menu_id) { echo "Location: " . $location . " | Menu ID: " . $menu_id . "<br>"; }
Display a specific menu by location
This code snippet displays the menu assigned to the ‘header-menu’ location.
$menu_location = 'header-menu'; if (isset($locations[$menu_location])) { wp_nav_menu(array('menu' => $locations[$menu_location])); }
Check if a menu is assigned to a specific location
This code snippet checks if a menu is assigned to the ‘footer-menu’ location.
$menu_location = 'footer-menu'; if (isset($locations[$menu_location]) && $locations[$menu_location] != 0) { echo "A menu is assigned to the footer-menu location."; } else { echo "No menu is assigned to the footer-menu location."; }
Display a fallback message if no menu is assigned to a location
This code snippet displays a fallback message if no menu is assigned to the ‘sidebar-menu’ location.
$menu_location = 'sidebar-menu'; if (isset($locations[$menu_location]) && $locations[$menu_location] != 0) { wp_nav_menu(array('menu' => $locations[$menu_location])); } else { echo "Please assign a menu to the sidebar-menu location."; }
Get the menu name of a menu assigned to a location
This code snippet retrieves the menu name of the menu assigned to the ‘main-menu’ location.
$menu_location = 'main-menu'; if (isset($locations[$menu_location])) { $menu_object = wp_get_nav_menu_object($locations[$menu_location]); echo "Menu Name: " . $menu_object->name; }