3

I have added following code to my function.php

function register_my_menu() {
   register_nav_menu('header-menu',__( 'Menu' ));
}
add_action( 'init', 'register_my_menu' );

And here is my code where menu is located.

wp_nav_menu( array( 'theme_location' => 'header-menu' ) );

What might be the issue ?

1 Answer 1

4

I have done a complete answer on this a while ago on SO. You can see the complete post here. For the sake of WPSE users, I have copied my answer from that post. I have not edited it, this post was originally about adding and displaying a nav menu to the footer, but the same exact method applies for a header nav menu. I hope you find this helpful

ORIGINAL POST FROM SO

You have registered you two nav menus correctly. I always do that within my initial theme setup hook that gets hooked to the after_setup_theme hook. So I would do something like this in your functions.php:

function pietergoosen_theme_setup() {
  register_nav_menus( array( 
    'header' => 'Header menu', 
    'footer' => 'Footer menu' 
  ) );
 }

add_action( 'after_setup_theme', 'pietergoosen_theme_setup' );

Keep in mind, you don't have to do it this way. The following also works

register_nav_menus( array( 
        'header' => 'Header menu', 
        'footer' => 'Footer menu' 
      ) );

You should now see the two menus in the backend under "Appearance > Menus > Manage Locations" (Only if a menu exist)

Screenshot of menus

For the sake of the footer menu, add the following code in your footer where you need to display the menu:

<nav id="footer-navigation" class="site-navigation footer-navigation" role="navigation">
       <?php wp_nav_menu( array( 'theme_location' => 'footer', 'menu_class' => 'nav-menu', 'fallback_cb' => false ) ); ?>
</nav>

At this stage nothing will be displayed, and I think this is where you also get stuck at. The reason for this is that there aren't any items assigned to the menu, and if there are nothing assigned to a menu, then nothing will be displayed. So we have to insert something to be displayed.

In the backend, go to "Appearance > Menus > Edit Menus". In the "Menu Name" field, enter a name for your menu and click "Create Menu". You will now be able to add the menu in the menu screen.

Screenshot of the menu

You can now choose items from the left hand side to insert into your menu. You can also set the location of the menu, in this case in the footer. I've selected to display the categories in the footer. Click "Save Menu" when done.

Screenshot of saved menus

You should now see your nav menu in the front end.

Screenshot of footer menu

You just have to add styling to your nav bar now. You will do exactly the same for the header nav menu, accept you will add the call to the menu in the header.php. I hope you find this usefull.

6
  • I did as you explained but still there is same result :( Sep 8, 2014 at 10:08
  • Is your file called function.php or functions.php Sep 8, 2014 at 10:16
  • It is functions.php ... Sep 8, 2014 at 10:21
  • 1
    Got the solutions ! Thanks for your time .You owe coffee :) Sep 8, 2014 at 10:25
  • 1
    Please explain what changed, or what the solution was?
    – Lee
    Feb 13, 2019 at 11:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.