Returns all navigation menu objects.
Parameters
$args
arrayoptional- Array of arguments passed on to get_terms() .
More Arguments from get_terms( … $args )
Array or string of arguments. See WP_Term_Query::__construct() for information on accepted arguments.Default:
array()
Source
function wp_get_nav_menus( $args = array() ) {
$defaults = array(
'taxonomy' => 'nav_menu',
'hide_empty' => false,
'orderby' => 'name',
);
$args = wp_parse_args( $args, $defaults );
/**
* Filters the navigation menu objects being returned.
*
* @since 3.0.0
*
* @see get_terms()
*
* @param WP_Term[] $menus An array of menu objects.
* @param array $args An array of arguments used to retrieve menu objects.
*/
return apply_filters( 'wp_get_nav_menus', get_terms( $args ), $args );
}
Hooks
- apply_filters( ‘wp_get_nav_menus’,
WP_Term[] $menus ,array $args ) Filters the navigation menu objects being returned.
After some work, I have summarized differences between some menu functions:
var_dump( wp_get_nav_menus()); // returns all navigation objects
// returns allocated menus to themevar_dump( get_registered_nav_menus()); // returns registered menus
var_dump( get_nav_menu_locations());
Menu Objects are like this:
Menu object has: public ‘term_id’ => int 17
Menu object has: public ‘term_id’ => int 18
Registered menus in theme:
array (size=2)
‘primary’ => string ‘Primary menu’ (length=12)
‘footer’ => string ‘Secondary menu’ (length=14)
Locations point to used menus:
array (size=2)
‘primary’ => int 17
‘footer’ => int 18
So in this theme: only ‘primary’ and ‘footer’ exist in the theme and are used 17 for ‘primary’and 18 menu object for ‘footer’