One menu. The right links for every visitor.

Menu Role Visibility lets you choose who sees each navigation link, lock the pages behind them, and give new members the right role from their email address.

Download free
See how it works

100% free because
we can!

The same menu shown to three visitors. A logged-out visitor sees Home, Services, Pricing and Log in. A client sees Home, Services, Pricing, Client Portal and Invoices. An editor sees Home, Services, Pricing and Editor Tools.

Four tools for deciding who sees what

Use one, or use all four. Each works on its own and they share the same role list, so there is nothing extra to set up.

Choose who sees each menu link

Every item in Appearance → Menus gets a Visibility setting. Links a visitor isn’t allowed to see are removed from the menu before your theme draws it.

  • Show a link to everyone, to logged-in users only, to specific roles, or to logged-out visitors only
  • Pick as many roles as you like, including custom roles from membership, LMS and shop plugins
  • Hide a parent link and its sub-menu goes with it
  • The menu editor always shows every link, so you can keep editing. Only the live site follows the rules
  • Works with classic WordPress menus, including most mega-menu plugins

Lock the page, not just the link

Hiding a link doesn’t stop someone who knows the address. Tick “Also block direct access to this page” on any menu link and the page itself is protected.

  • Logged-out visitors can be sent to the login screen and returned to the page they asked for after they log in
  • Or send people to another page, to a custom URL, or show an “access denied” message
  • Set site-wide defaults once, then override any link or page
  • Redirect loops are prevented, and administrators can be let straight through
  • Covers pages, posts, custom post types, categories, tags, archives and custom links to your own site

Set permissions on any page or post

Every page and post gets a Content Permissions box with a checklist of your site’s roles. No menu link needed.

  • Tick the roles that may view it. Leave them all unticked and everyone can
  • The author and anyone who can edit the content can always view it, so you never lock yourself out
  • Each page can have its own redirect and its own error message
  • Restricted content is replaced by that message in archives, search results, feeds and the REST API
  • Only administrators see the box by default

Give new users the right role from their email domain

Pair an email domain with one or more roles. When someone registers with an address at that domain, they get those roles instead of your default.

  • Use acme.com for one domain, or *.acme.com to cover its subdomains
  • Tick several roles in one rule. The first becomes the primary role and the rest are added alongside it
  • The first matching rule wins, and anyone who matches nothing keeps your default role
  • Roles that can manage users, plugins or site settings, such as Administrator, can’t be handed out this way
  • Applies to new sign-ups only. Users you add yourself keep the role you picked

Built to stay out of your way

No extra database tables

Rules are saved as ordinary WordPress settings and menu-item data.

Nothing phones home

No tracking, no outside requests and no upsell screens inside the plugin.

A clean exit

Delete the plugin and its settings, rules and per-item data are removed with it.

Safe by default

Every save is protected by a security check, and privileged roles can’t be assigned by email domain.

Cache-aware

Restricted pages send no-cache headers so they don’t end up in a shared page cache.

Ready for developers

Filters like mrv_item_visible, mrv_content_allowed and mrv_domain_roles let you adjust any decision in code.

Up and running in three steps

  1. Download the plugin

    Grab the free zip file. No account and no payment details.

  2. Upload and activate it

    In WordPress, go to Plugins → Add New → Upload Plugin, choose the zip, then activate.

  3. Set your first rule

    Open Appearance → Menus and expand a link to set its Visibility, or edit a page to set Content Permissions.

Good to know

Menu rules work with classic menus. They apply to menus under Appearance → Menus, not the block editor’s Navigation block. Content Permissions work with any theme.
It isn’t a vault. Titles, links and dates of restricted pages can still appear in listings, sitemaps and the REST API. For highly sensitive material, use a dedicated membership plugin as well.
Email addresses aren’t verified. Anyone can type an address at a domain they don’t own when they register, so only map domains to roles that are safe to give out, or confirm addresses before you trust a domain.
Using a caching plugin? Exclude logged-in users from page caching and clear the cache after you change a rule.

Why is it free? Because we can.

Razenet is a small, family-owned company in Red Deer, Alberta, built and run by a husband and wife. We make WordPress plugins and websites, and we decided to give this one away. There are no locked features, no trial period and no upgrade nags. If it helps you, tell someone else who runs a WordPress site. That’s all we ask.

Give every visitor the right menu

Download Menu Role Visibility and set your first rule today.

Version 1.4.0. Requires WordPress 5.5 or newer and PHP 7.2 or newer.