If Menu


If Menu plugin adds extra functionality for menu items, making it easy to hide or display them based on user-defined rules. Example:

  • Display a menu item only if current User is logged in
  • Hide menu items if visiting from mobile device
  • Display menu items just for Admins and Editors

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


  • 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
    • Device Is Mobile
    • Language Is RTL
    • more to be added with each plugin update
  • 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


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


To install the plugin, follow the steps below

  1. Upload if-menu to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Enable visibility rules for your Menu Items in Appearance -> Menus page


Installation Instructions

To install the plugin, follow the steps below

  1. Upload if-menu to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Enable visibility rules for your Menu Items in Appearance -> Menus page
If Menu is broken

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 do 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.

Who made that really cool icon

Got the icons from here https://dribbble.com/shots/1045549-Light-Switches-PSD, so giving the credit to Louie Mantia


Works great with Membership plugin

A client is using Justin Tadlock’s Membership plugin and wants to hide pages on the navigation menu for the general public, but show them for logged in users (members). Found this plugin and it’s just what the doctor ordered. VERY simple to install and configure individual menu items from the standard WP Menus interface.

Good Job!!


Easy to use and it does exactly what it says!
Superb, thanks for making this!

Just doesn’t work

Looks like it would be a great plugin but just straight up doesn’t work with a very simple custom theme with the menu added using wp_nav_menu. None of the options work and all menu items are visible to all users, logged in or not. Shame.

Well designed and powerful.

Does what it says and can be customized. My use was creating menu items that were visible to Woocommerce Membership types, but this would work for almost any membership plugin. The adding conditions filter (see the FAQ) made this possible. Plugin author very responsive and helpful in the forums.

To make this plugin a fully fledged unicorn the only other feature I’d like to see is conditions on the whole menu, not just individual menu items… that being said this is still possible by adding an “if” statement to every item.

Thanks again!

Great plugin, helped me having multi-language menus

I basically needed something to allow me to show or hide menus based on the language the user selected to view the site. I am implementing my own solution using ACF and this plugin made it possible in the end.

I defined my own condition to show/hide the menu and simply selected that in the Appearance-> Menu section. Works perfectly, thank you!

Read all 64 reviews

Contributors & Developers

“If Menu” is open source software. The following people have contributed to this plugin.


“If Menu” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “If Menu” into your language.

Interested in development?

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



Release Date – 18 September 2017

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


Release Date – 17 August 2017

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


Release Date – 8 August 2017

  • Fix – Backwards compatibility with PHP < 5.4


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


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


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
  • Feature – Added support for multi conditions thanks for this ideea
  • Improvement – RO & DE translations


Release Date – 13 December 2015

  • Fix – Fixes issue with adding new menu items


Release Date – 29 November 2015


Small update

  • Plugin icon
  • Set as compatible with WordPress 4


Minor fixes

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


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)


  • Plugin release. Included basic menu conditional statements