Nav Menu Roles Review & How To Create A Custom WooCommerce Menu System.

If you’ve ever wanted to show a different menu item in WordPress, or hide a navigation menu item based on a user role, then you’ll want to check out my review of the Nav Menu Roles WordPress plugin.

About the Nav Menu Roles WordPress plugin

Created by Kathy DarlingNav Menu Roles looks to address a particular need. The ability to show or hide a menu item in WordPress based on a user’s role.

It’s an exciting concept, and for those who use a membership plugin or e-Commerce solution, this could be of significant interest to you.

With over one million downloads on WordPress.org and over 100,000 active installations, it seems I’m not alone in thinking this plugin is useful.

It’s also worth noting; Nav Menu Roles is entirely free to use and download.

Why would you show or hide a WordPress navigation menu item?

It’s important to understand why you’d even consider doing this, and there’s a few reasons for doing so such as:

  • You’re running an online store (maybe with WooCommerce or Easy Digital Downloads) and want a cleaner menu structure, for example.
  • You’re running a membership website using WordPress and a membership plugin and want to clean up the menu system.

There are probably even more reasons, off the top of my head, that’s all I’ve got so far—sorry brain freeze.

Installing the Nav Menu Roles plugin

Navigate to your WordPress backend, enter Nav Menu Roles, hit install, and that’s it. Or, if you prefer, you can grab it from the WordPress repo here.

Where are the settings for it?

Quite a few plugins have their own settings panel, and you might be a little lost at first. Don’t worry. Sensibly the settings reside in the menu section.

Go to Appearance > Menus in your WordPress backend.

Settings for Nav Menu Roles WordPress plugin

I’ve just created a basic menu to show what the plugin offers. By clicking on the menu item ‘Home’ in my case, you will find some new additions under the name ‘Display Mode.’

Let’s take a look at what each one does, respectively.

Logged in user settings

As the name would suggest, this will display the menu item to logged-in users; user role choices are listed below. All you have to do is click the specific user role you’d like the menu item to show for.

Logged out users and everyone

There are no additional settings for either of these two options, and why would you need one?

‘Logged out users’ is as simple as the name suggest, show that specific menu item to anyone logged out of your site. Or select ‘everyone’ so all visitors, no matter whether logged in or not can view the menu item.

*Important to remember

The plugin lets you hide menu items based on user roles; however, it does not restrict access to the content itself. If you need to limit access to specific content, then you’ll need to install a plugin to handle that.

That’s the review

Not much of a review granted. The plugin does exactly what it says on the tin. I could stop there and tell you it performs very well indeed, super simple to use, and don’t forget it’s free.

Where’s the fun in that? How about I show you a little something, maybe a mini-tutorial? A real-world usage scenario?

Sound good? Let’s take WooCommerce for example, in the next section I’m going to show you how to make a custom WooCommerce menu along with why.

Making a custom menu in WooCommerce

For this part I’m going to install WooCommerce, I want to show you a real example of how the plugin could be of benefit. (Slopes off to install WooCommerce add a few products and other bits and pieces.)

WooCommerce’s new install method was fun lol. I digress, the above is a screenshot displaying a menu I whipped up. Nothing fancy here, I added a bog-standard menu, with the default Nav Menu Roles setting, which is to display for everyone.

I’m in the product itself (apologies for my lack of imagination regarding the product!), as you can see, the nav menu is on display.

How to hide a WordPress navigation menu item

For this example, I’m going to hide the ‘About’ menu item; all we have to do is go back to our menu settings in Appearance.

I’ve selected ‘Editor‘ under the Logged In Users setting. So what does that do to the front end, considering I’m an Administrator, not an Editor?

Well, the About menu item has gone, as the user role is set to Editor, not everyone. It will only show to users who have the user role of Editor. So very basic at the moment and not very sexy, I guess. 

Let’s get sexy with it.

How to make a custom menu in WooCommerce

First, let’s take a moment and think about this logically. If you’re running a WooCommere store or indeed using a membership plugin, you might not want to have complicated menus in place.

You’ll more than likely want to keep things simple. Using WooCommerce and all the pages it creates and endpoints, it can be a bit of a mess to a visitor if, of course, you wanted to display all of them at once.

Logged in links, Logged out links, My Account, Cart, the list goes on and on. All useful, let’s put it into a way our customer/visitor can understand.

Narrowing down menu items based on logged out users

We want things to be super easy for our visitors, so narrowing down the menu items when it comes to WooCommerce makes sense. 

It leads to a cleaner experience, the easier, the better. Take a look at the menu I’ve created below.

As you can see, I’ve made the following available to logged out users:

  • Home, About, Shop & Register / Login

Why Register / Login? I think this is a cleaner way of doing things, having the menu item as My Account is a little ambiguous, especially if you don’t already have an account.

I want my visitors to see how clear it is that they can register for an account or login if they have an existing one.

The second part of the menu deals with ‘Logged In Users.’ I’ve defined the user role as ‘Customer’ in the menu settings for each menu item. So these menu items will only display to those who are, in fact, a ‘Customer.’

Lastly, on the image, you’ll probably have noticed the menu item ‘Logout.’ 

Why have I done this? For me, it’s cleaner to have it outside of the ‘My Account’ menu item as a submenu, it’s more evident that a user can logout if and when they need to.

Remember, not every visitor has used WooCommerce as a shop front to purchase online, so helping users with navigation is a sure-fire way to be remembered as having an easy to use online store.

Putting it all together, what does our custom WooCommerce menu look like?

First up, let’s view the menu I’ve created as a logged-out user, note the Register / Login menu item? Now let’s look at the menu from a ‘Customer’ user role.

Well, Register / Login is now gone, and we are left with a cleaner experience for our visitors, with the apparent Logout link.

All possible thanks to the Nav Menu Roles WordPress plugin

I could go on and on, and tell you a bunch more possibilities with the Nav Menu Roles plugin, I think you’ve got the gist by now. Take it for a spin, see what you can come up with. 


Perfect for creating a cleaner menu structure based on a user role, so ideal for WooCommerce, and whatever platform you use for membership.

Functionality5
Ease of use5
Final Review Score5

Summary

Kathy Darling has created an awesome plugin here, and I thank her for taking the time out to make something so useful.


Subscribe To My Newsletter 🚀

I hate spam; you do as well, come on, you know you hate it. I don’t spam. Simple. Join 48 others and sign up if you’d like to hear more from me.

By subscribing you agree to receive newsletters and agree with my Privacy Policy. You may unsubscribe at anytime.
Default image
Ben
Hey I'm Ben. LayerWP is where I spend most of my time. Creating content for WordPress beginners, reviewing themes/plugins, offering advice and tips and tutorials.

2 Comments

  1. Hi Ben! Thanks for reviewing my plugin! I’m glad you found it easy to use… that was my main goal. WordPress definitely recommends testing by capabilities, but for users setting up the menu it’s so much easier to pick between roles than say between edit_options, manage_posts, etc. You sacrifice a little when some roles overlap, but I think it’s worth it.

    I think it might finally be possible to get the meta fields in the customizer so hopefully I can look into that some day. And if anyone knows how to cache parts of the menu, but bust out the role-sensitive parts or otherwise help optimize the menu (currently it doesn’t work well with caching) come find me at github! https://github.com/helgatheviking/nav-menu-roles

    • No worries Kathy, it’s a great plugin and very useful for those who’d like to structure menus based on roles, thanks for taking the time to developer this, personally, I loved it.

      If anyone can help Kathy with her questions please do, I’d help, however I am sans dev skills!

      Thanks for the comment Kathy, appreciate it.

Leave a Reply