If Menu – Visibility control for Menu Items

Description

Control what menu items your site’s visitors see, based on visibility rules. Here are a few examples:

  • Display a menu item only if current User is logged in
  • Hide menu items if Device is mobile
  • Display menu items for Admins and Editors
  • Hide Login or Register links for Logged in Users
  • Display menu items for Users from US or UK
  • Display menu items only for Customers with active membership
  • Display menu items for visitors browsing with Language English or Spanish

The plugin is easy to use, each menu item will have a new option “Change menu item visibility” which will enable the selection of rules (example in Screenshots)

Features

  • Basic set of visibility rules
    • User state User is logged in
    • User roles Admin Editor Author etc
    • Page type Front page Single page Single post
    • Visitor device Is Mobile
  • Advanced visibility rules – requires Premium plan
    • Visitor location – detect visitor’s Country
    • Visitor language – detect visitor’s selected Language
    • WooCommerce Subscriptions – Display menus for users with active subscription
    • WooCommerce Memberships – Display menus for customers with active membership plans
    • Groups – Detect if users are in specific groups
    • WishList Member – Detect the users’ membership level
    • Restrict Content Pro – Detect the users’ subscription level
  • Multiple rules – mix multiple rules for a menu item visibility
    • show if User is logged in AND Device is mobile
    • show if User is Admin AND Is front page
  • Support for adding your custom rules

Example of adding a new visibility rule is described in the FAQ section

Screenshots

  • Enable visibility rules for Menu Items
  • Example of visibility rules

FAQ

If Menu is broken, no visibility rules are available

The code for modifying the menu items is limited and if other plugins/themes try to alter the menu items, this plugin will break.

This is an ongoing issue with WordPress which hopefully will be fixed in a future release.

Try to use just one plugin that changes functionality for menu items.

How can I add a custom visibility rule for menu items?

New rules can be added by any other plugin or theme.

Example of adding a new custom rule for displaying/hiding a menu item when current page is a custom-post-type.

// theme's functions.php or plugin file
add_filter('if_menu_conditions', 'my_new_menu_conditions');

function my_new_menu_conditions($conditions) {
  $conditions[] = array(
    'id'        =>  'single-my-custom-post-type',                       // unique ID for the rule
    'name'      =>  __('Single my-custom-post-type', 'i18n-domain'),    // name of the rule
    'condition' =>  function($item) {                                   // callback - must return Boolean
      return is_singular('my-custom-post-type');
    }
  );

  return $conditions;
}
Where can I find conditional functions?

WordPress provides a lot of functions which can be used to create custom rules for almost any combination that a theme/plugin developer can think of.

Reviews

Perfect!

Installed and within seconds only admins had access to menu items. Just what I needed… SPLENDID!

Thanks for coding this and gifting the WP community 🙂

Excellent Plugin

This is one of the first plugins I install on any WP site I build. I love that I can easily add functions to enable new visibility criteria. This is a great plugin!

Perfect

Perfect with the use of another member plugin and very simple to use. Continue like that!!

Read all 75 reviews

Contributors & Developers

“If Menu – Visibility control for Menu Items” is open source software. The following people have contributed to this plugin.

Contributors

“If Menu – Visibility control for Menu Items” has been translated into 3 locales. Thank you to the translators for their contributions.

Translate “If Menu – Visibility control for Menu Items” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

0.12.2 – 3 September 2018

  • Fixed – PHP error blocking page load

0.12 – 3 September 2018

  • Added – Visiblity rule – Detect visitor’s selected language
  • Updated – Link to Support Request email
  • Fixed – Better check for Premium plan after purchase (was not enabled in some cases)

0.11 – 23 Jul 2018

  • Fixed – Blank page on “Appearance -> Menus”
  • Fixed – Better compatitility with themes / plugins

0.10 – 8 May 2018

  • Added – Visibility rule – User has Subscription Level, integration with Restrict Content Pro plugin
  • Fixed – Display all WooCommerce Membership plans and save the visibility rule
  • Fixed – Small render artifact in menu item title

0.9 – 21 April 2018

This version requires PHP version to be at least 5.4
* Added – Visibility rule – Customer has active membership, integration with WooCommerce Memberships plugin
* Added – Visibility rule – Customer has active Job Manager Listing Subscription, integration with Listing Payments for WP Job Manager plugin
* Added – Option to disable menu item filtering in Admin panel
* Updated – Texts and notices

0.8.3

Release Date – 22 February 2018

  • Fixed – Support for PHP <= 5.3, fixes error

0.8.2

Release Date – 20 February 2018

  • Fixed – Support for older visibilty rule names, fixes PHP warning

0.8.1

Release Date – 20 February 2018

  • Fixed – Better options checking, fixes PHP warning

0.8

Release Date – 19 February 2018

  • Added – Visibility rules with multiple options. Requires Premium plan
  • Added – Visibility rule – User country
  • Added – Visibility rule – Is Super Admin on MultiSite
  • Added – Visibility rule – User is in Group, integration with Groups plugin
  • Added – Visibility rule – User has subscription, integration with WooCommerce Subscriptions plugin
  • Added – Visibility rule – User has active membership plan, integration with WooCommerce Memberships plugin
  • Added – Visibility rule – User membership level, integration with WishList Member plugin
  • Updated – Better conflict detection for Nav_Menu Walker
  • Fixed – translation strings & function used

0.7

Release Date – 18 September 2017

  • Enhancement – Nicer styling for visibility rules
  • Added – Peek option – Let admins preview hidden menu items
  • Added – Settings page

0.6.3

Release Date – 17 August 2017

  • New visibility rule – Language Is RTL
  • Fix – Single rule works on servers with Eval disabled

0.6.2

Release Date – 8 August 2017

  • Fix – Backwards compatibility with PHP < 5.4

0.6.1

Release Date – 7 August 2017

  • Improvement – Change labels & texts for easier use
  • Improvement – Better compatibility with latest versions of WordPress
  • Improvement – Better compatibility with translation plugins
  • Fix – Detection for conflict with other plugins

0.6

Release Date – 27 August 2016

  • Improvement – Dynamic conditions based on default & custom user roles (added by plugins or themes) thanks Daniele
  • Improvement – Grouped conditions by User, Page or other types
  • Fix – Filter menu items in admin section
  • Fix – Better menu items filter saving code

0.5

Release Date – 20 August 2016

  • Improvement – Support for WordPress 4.6
  • Feature – New condition checking logged in user for current site in Multi Site [requested here](https://wordpress.org/support/topic/multi-site-user-is-logged-in-conditi
    on)
  • Feature – Added support for multi conditions thanks for this ideea
  • Improvement – RO & DE translations

0.4.1

Release Date – 13 December 2015

  • Fix – Fixes issue with adding new menu items

0.4

Release Date – 29 November 2015

0.3

Small update

  • Plugin icon
  • Set as compatible with WordPress 4

0.2.1

Minor fixes

  • Fix – Editing menus – show/hide conditions when adding new item (thanks Joseph Segal)

0.2

Update for compatibility with newer versions of WordPress

  • Feature – access to menu item object in condition callback (thanks BramNL)
  • Fix – alert for leaving page even if no changes were made for menus (thanks Denny)
  • Fix – update method in Walker_Nav_Menu_Edit to be compatible with newer version of WP
  • Fix – example in Readme (thanks BramNL)

0.1

  • Plugin release. Included basic menu conditional statements