To set up menus, go to your Dashboard > Appearance > Menus page, create your menu and assign it to a theme location. Most themes will have 2 or 3 locations. One of those locations is the primary (main) location, usually within the header area, and it’s always visible, even if there’s no custom menu tied to it.

Dashboard Menu Page

Generating menus automatically

If no custom menu is assigned to the main menu location, the theme will default to an automated page menu. If you want to change that to a category menu you can do so within the Menus page above, by creating a custom menu and adding the categories you want in it. But there are situations in which you want the menu to be dynamic, so you don’t have to manually update it every time a new category is created. You can do this by leaving the location empty and changing default arguments for the getMenu() method:

$app->addContextArgs('primary_menu',
  array(
    'fallback_cb'  => array(&$app, 'categoryMenu'),

    // other args you might wish to change
    'include_home'   => true,
    'include_search' => true,
    'menu_class'     => 'menu',
  )
);

For a full list of arguments that you can override check out the ones from wp_nav_menu()and wp_list_categories() if you’re using the category menu as fallback. There are a few extra arguments supported by getMenu(), from which the most relevant is include_home (true/false).

You can generate menus from any type of post or taxonomy, not just pages and categories.