How can I have two different menus for signed in / not signed in users


I am looking for a method to create two different menus to display to signed in / not signed in users.

I have previously used Wordpress Access Control to achieve this but it seems to conflict with Protected Content.

I was intending to create two versions of each menu.. one for signed in users and one for visitors.

I tried enabling the menu options add on for Protected Content but this does not control what menu items are actually displayed to users.

Can you please advise how i can achieve this.


(support access is open to the site)

  • Vaughan
    • Support/SLS MockingJay

    Hi chris,

    Hope you're well?

    You first need to create your custom menu in appearances > menus and assign it to a primary menu (screenshot 1)

    Add all your menu items to the menu.

    Now in Protected content

    Dashboard > protected content > protected content > menu items

    Select your custom menu from the list at top. You should then see all the menu items you added to your custom menu. (screenshot 2)

    As default, everyone will have access.

    To change access, click the modify access button (it appears when you hover over the menu item you wish to protect)

    You can then select which membership plans have access to that menu item. (screenshot 3)

    Note, this only hides the menu items. It will not protect access to those pages, you have to add protection for the pages seperately.

    Hope this helps

  • chris
    • The Crimson Coder

    Hi Vaughan,

    Thanks for the details. This is really helpful.

    Having looked at it I can get it working as you describe and display new menu items to members above but as yet there is one key action I need that i can't find a way to do...

    In my menu I have a link to the register page ( /register). I want this to display to everyone until they sign in. Once signed in this menu item should no longer display (instead I want to show a link the the membership page. )

    I cant see a way to achieve this though. Basically how to I make a menu item visible only to "visitors" and hidden from any "members".


    I think this is possible using the advanced menu protection add-on.

    This gives an option when first setting it, to "replace individual menus" The options page then allows you to set the access control for these and choose a new menu to replace the previous.

    I can probably achieve what i need here by creating new menus using this replace feature - but it also has an option to "overwrite contents of menu locations" .

    Could you confirm what these two options do... i cant tell how they differ (ie why use one or the other)


  • chris
    • The Crimson Coder

    Can someone please let me know how I can set different menus to show to different membership levels.

    I have two membership areas on the site.

    I have visitors to the site (not signed in) and subscribers who are either Clients or Instructors.

    So I have created 3 different menus for each menu area. i.e. main (visitor), main (client), main (instructor.) Each contains different links.

    The problem I have found is that although i can replace a menu through the plugin I can only do it once. e.g. replace main (visitor) with main (client) .... but then I cant replace main (vistitor) with main (instructor)

    Support access is open on the site.


  • Anang
    • New Recruit

    Hi @chris

    Trying to help here :slight_smile:

    Actually maybe you can combine Protectected Content (now integrated with Membership2) with Nav Menu Roles plugin (for control logged out menus)

    So basically you need to :
    1. Mark logged out only for Menu that only can be access non registered member
    2. Mark everyone for rest of the menus (login or not)
    3. Adjust permission in Membership2 for Client and Instructor menu

    If you need more help, please re-grant the access :slight_smile:

    Best Regards

Thank NAME, for their help.

Let NAME know exactly why they deserved these points.

Gift a custom amount of points.