Function and usage of has_nav_menu() in wordpress


Answers ( 1 )


    The has_nav_menu() function in WordPress is used to determine if a navigation menu location, typically defined in a theme, has a menu assigned to it. This function is particularly useful for theme developers who want to add conditional code depending on the presence of menus in specific locations.

    Function Signature:

    has_nav_menu( string $location ): bool


    • $location (string, required): This is the identifier for the menu location. The identifier is usually defined by the theme using the register_nav_menus() function. Each menu location should have a unique identifier.

    Return Value:

    • bool: The function returns a boolean value (true or false). It returns true if a menu is assigned to the specified location, and false if no menu is assigned.

    Sample Usage:

    1. Basic Usage: To check if a menu is assigned to a specific location and conditionally display content.

      if ( has_nav_menu( 'primary' ) ) {
          // Code to display the primary menu
      } else {
          // Alternative content if no primary menu is assigned

      In this example, the function checks if there is a menu assigned to the 'primary' location. If there is, it executes the first block of code; if not, it executes the alternative block.

    2. Incorporation in Theme Files: Typically used in theme header, footer, or sidebar template files to dynamically display menus.

      // In a theme's header.php file
      if ( has_nav_menu( 'header-menu' ) ) {
          wp_nav_menu( array( 'theme_location' => 'header-menu' ) );

      This code checks if a menu is assigned to 'header-menu'. If yes, it displays the menu using wp_nav_menu().

    Best Practices:

    • Always check for the existence of a menu in a location before trying to display it to avoid rendering empty menu containers.
    • Use meaningful location identifiers that clearly describe the location in the theme (like 'primary', 'footer', 'sidebar', etc.).
    • Remember to register the menu locations in your theme using register_nav_menus().


    has_nav_menu() is a simple yet powerful function for theme developers in WordPress, allowing them to create themes that adapt dynamically based on the menus assigned by the website administrator.

Leave an answer