Different menus for different pages?

  • McChazza


    Hi all

    Is it possible to have different menus on different pages? I have created three menus but would like to limit the display to only the top bar. I can’t see any ‘menu select’ setting in the page edit or page quick edit areas. Can anyone help?

    My site is at: http://www.graphenepartners.com

    Many thanks in advance, best wishes




    I don’t really know of any way to do this with a header menu. You can get a plugin which would allow you to do this with a widget area. So, you could choose which page to show which menu widget.

    But, this won’t work in the header as you were asking. Would the widget area work for your purposes?



    Thanks Josh, much appreciated. To a beginner, that seems like a surprising lack of functionality – especially as the option is already there to define multiple menus.

    I’ll have a think about whether moving from a header menu to a left/right menu is worth the functionality improvement. To be honest, I am still at the stage where I am scared stiff of breaking something every time I make a change, so I am ecstatic just to have the site working at all… πŸ™‚

    Best wishes



    Kenneth John Odle


    To a beginner, that seems like a surprising lack of functionality – especially as the option is already there to define multiple menus

    Not really. Part of good web design is that you have a consistent look across a domain or subdomain, so that people know they are still on your site. I can’t think of any themes that allow you to change header menus from page to page because of this.

    “multiple menus” are actually custom menus and you can do a lot with them besides just linking to your own pages. They’re not just for breakfast any more!

    (Seriously though, I will someday write a post about everything you can do with a custom menu.)



    Thanks Kenneth, appreciate your constructive slapdown πŸ™‚

    I agree that completely changing your menus is confusing; in my case the point is that – depending on which area of my site someone is reading, certain links should be more prominent/easy to reach than others. Surely this is not a strange request?

    Appreciate from the previous reply that the best way forward may be to use widget menus on the side bars. Once I’ve recovered from the euphoria of getting my site up and running at all, then moving to MU, and then switching the whole lot from one domain to another with mass SQL editing, I’ll get round to sorting out the menus.

    Look forward to your post – thanks again for your advice and help πŸ™‚




    Kenneth John Odle


    depending on which area of my site someone is reading, certain links should be more prominent

    This is a better solution than actually changing the order or position of the links and can be achieved (maybe?) through some creative CSS.



    I just made a code for different secondary menu’s using the graphene’s secondary menu. The idea is you use conditional formating the if is_page(ID);

    If I’d have to give my opinion, I wouldn’t want my “main” menu to change, but leave it there. It makes navigating much easier and your Site’s looks will remain the same everywhere. Though, having different sec. menu’s for different parts of your site can be helpfull.

    Ok, here it is, if you want to try it. I’ll guide you through this. This code goes into your child-theme’s function.php:

    /* Register multiple secondary menus */
    register_nav_menus( array(
    'secondary-menu-NAME1' => __( 'Secondary Menu (NAME1)', 'graphene' ),
    'secondary-menu-NAME2' => __( 'Secondary Menu (NAME2)', 'graphene' ),
    'secondary-menu-NAME3' => __( 'Secondary Menu (NAME3)', 'graphene' ),
    ) );

    /* Conditionally display secondary menu */
    function graphene_multiple_secondary_menu( $args ){

    if ( is_page(array(PAGE_ID's,)) )
    $args = array_merge( $args, array( 'theme_location' => 'secondary-menu-NAME1' ) );

    if ( is_page(array(PAGE_ID's)) )
    $args = array_merge( $args, array( 'theme_location' => 'secondary-menu-NAME2' ) );

    if ( is_page(array(PAGE_ID's)))
    $args = array_merge( $args, array( 'theme_location' => 'secondary-menu-NAME3' ) );

    return $args;
    add_filter( 'graphene_secondary_menu_args', 'graphene_multiple_secondary_menu' );


    You can also use category_ID’s for category pages.

    The code should then be:

    if ( is_category(array(category_ID's)) )
    $args = array_merge( $args, array( 'theme_location' => 'secondary-menu-NAME1' ) );

    Now when you go to Appearance->Menu, you can set up different menus “A, B and C” (put the pages/links/categories/tags you want in your menu) and you’ll see you have (in this example) three new sec. menu’s where you can select menu menu A, B and C.

    That’s it…



    Many thanks, Manasse πŸ™‚

    The techspeak is still a little bit over my head but I think I follow you.

    As you have perhaps seen on my site, I am keeping it very simple – just the standard nav menu below the header. Because of this, the thought of adding another menu for some pages seems to me to be a more confusing option than slightly changing the order of pages in the nav menu. But neither option is too big an issue, and I will see what other feedback I receive about the site.

    Appreciate your help


Viewing 8 posts - 1 through 8 (of 8 total)

  • You must be logged in to reply to this topic.
Graphene Themes Forum