wp_nav_menu( array $args = array() )
Displays a navigation menu.
Parameters #Parameters
$args
(array) (Optional) Array of nav menu arguments.
- ‘menu’
(int|string|WP_Term) Desired menu. Accepts a menu ID, slug, name, or object. - ‘menu_class’
(string) CSS class to use for the ul element which forms the menu. Default ‘menu’. - ‘menu_id’
(string) The ID that is applied to the ul element which forms the menu. Default is the menu slug, incremented. - ‘container’
(string) Whether to wrap the ul, and what to wrap it with. Default ‘div’. - ‘container_class’
(string) Class that is applied to the container. Default ‘menu-{menu slug}-container’. - ‘container_id’
(string) The ID that is applied to the container. - ‘container_aria_label’
(string) The aria-label attribute that is applied to the container when it’s a nav element. - ‘fallback_cb’
(callable|bool) If the menu doesn’t exist, a callback function will fire. Default is ‘wp_page_menu’. Set to false for no fallback. - ‘before’
(string) Text before the link markup. - ‘after’
(string) Text after the link markup. - ‘link_before’
(string) Text before the link text. - ‘link_after’
(string) Text after the link text. - ‘echo’
(bool) Whether to echo the menu or return it. Default true. - ‘depth’
(int) How many levels of the hierarchy are to be included. 0 means all. Default 0. Default 0. - ‘walker’
(object) Instance of a custom walker class. - ‘theme_location’
(string) Theme location to be used. Must be registered with register_nav_menu() in order to be selectable by the user. - ‘items_wrap’
(string) How the list items should be wrapped. Uses printf() format with numbered placeholders. Default is a ul with an id and class. - ‘item_spacing’
(string) Whether to preserve whitespace within the menu’s HTML. Accepts ‘preserve’ or ‘discard’. Default ‘preserve’.
Default value: array()
Return #Return
(void|string|false) Void if ‘echo’ argument is true, menu output if ‘echo’ is false. False if there are no items or no menu was found.
More Information #More Information
Usage #Usage
1 | wp_nav_menu( $args ); |
Given a theme_location parameter, the function displays the menu assigned to that location. If no such location exists or no menu is assigned to it, the parameter fallback_cb will determine what is displayed.
If not given a theme_location parameter, the function displays
- the menu matching the ID, slug, or name given by the menu parameter;
- otherwise, the first non-empty menu;
- otherwise (or if the menu given by menu is empty), output of the function given by the fallback_cb parameter (wp_page_menu(), by default);
- otherwise nothing.
Menu Item CSS Classes #Menu Item CSS Classes
The following classes are applied to menu items, i.e. to the HTML <li> tags, generated by wp_nav_menu()
:
All Menu Items #All Menu Items
.menu-item
This class is added to every menu item..menu-item-has-children
This class is added to menu item which has sub-items ..menu-item-object-{object}
This class is added to every menu item, where {object} is either a post type or a taxonomy..menu-item-object-category
This class is added to menu items that correspond to a category..menu-item-object-tag
This class is added to menu items that correspond to a tag..menu-item-object-page
This class is added to menu items that correspond to static pages..menu-item-object-{custom}
This class is added to menu items that correspond to a custom post type or a custom taxonomy..menu-item-type-{type}
This class is added to every menu item, where {type} is either “post_type” or “taxonomy”..menu-item-type-post_type
This class is added to menu items that correspond to post types: i.e. static pages or custom post types..menu-item-type-taxonomy
This class is added to menu items that correspond to taxonomies: i.e. categories, tags, or custom taxonomies.
Current-Page Menu Items #Current-Page Menu Items
.current-menu-item
This class is added to menu items that correspond to the currently rendered page.
Current-Page Parent Menu Items #Current-Page Parent Menu Items
.current-menu-parent
This class is added to menu items that correspond to the hierarchical parent of the currently rendered page..current-{object}-parent
This class is added to menu items that correspond to the hierachical parent of the currently rendered object, where {object} corresponds to the the value used for .menu-item-object-{object}..current-{type}-parent
This class is added to menu items that correspond to the hierachical parent of the currently rendered type, where {type} corresponds to the the value used for .menu-item-type-{type}.
Current-Page Ancestor Menu Items #Current-Page Ancestor Menu Items
.current-menu-ancestor
This class is added to menu items that correspond to a hierarchical ancestor of the currently rendered page..current-{object}-ancestor
This class is added to menu items that correspond to a hierachical ancestor of the currently rendered object, where {object} corresponds to the the value used for .menu-item-object-{object}..current-{type}-ancestor
This class is added to menu items that correspond to a hierachical ancestor of the currently rendered type, where {type} corresponds to the the value used for .menu-item-type-{type}.
Site Front Page Menu Items #Site Front Page Menu Items
.menu-item-home
This class is added to menu items that correspond to the site front page.
Backward Compatibility with wp_page_menu() #Backward Compatibility withwp_page_menu()
The following classes are added to maintain backward compatibility with the [[Function Reference/wp_page_menu|wp_page_menu()]] function output:
.page_item
This class is added to menu items that correspond to a static page..page_item_has_children
This class is added to menu items that have sub pages to it..page-item-$ID
This class is added to menu items that correspond to a static page, where $ID is the static page ID..current_page_item
This class is added to menu items that correspond to the currently rendered static page..current_page_parent
This class is added to menu items that correspond to the hierarchical parent of the currently rendered static page..current_page_ancestor
This class is added to menu items that correspond to a hierarchical ancestor of the currently rendered static page.