How do I get the name of a menu in WordPress?

The question:

I’m currently setting up a sidebar menu with multiple menus and sections. Each section with the title (the menu name) and a bunch of links underneath (the menu items) – I printed the items, but how do I print the menu name?

Thanks,

Jacob

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

You can access the menu metadata using the wp_get_nav_menu_object function

BY NAME:

$menu = wp_get_nav_menu_object("my mainmenu" );

BY SLUG:

$menu = wp_get_nav_menu_object("my-mainmenu" );

The return object as follows:

 Object (
   term_id => 4
   name => My Menu Name
   slug => my-menu-name
   term_group => 0
   term_taxonomy_id => 4
   taxonomy => nav_menu
   description => 
   parent => 0
   count => 6
 )

To display the name:

echo $menu->name;

Method 2

On WordPress version 4.9.0 and above you can use

wp_get_nav_menu_name($location)

wp_nav_menu_name for more

Method 3

You can get the name like this, using the menu location, so if the menu is updated or you assign other menu you dont have to update anything here:

$locations = get_nav_menu_locations(); //get all menu locations
$menu = wp_get_nav_menu_object($locations['name_of_the_menu_location']);//get the menu object

echo $menu->name; // name of the menu

the 'name_of_the_menu_location' is the one you use to output a menu using wp_nav_menu

<?php
     wp_nav_menu(array(
          'theme_location' => 'footer'//this value
     ));
?>


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment