Title: EffortLess Layered Menu Visibility
Author: domclic
Published: <strong>July 14, 2026</strong>
Last modified: July 14, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/effortless-layered-menu-visibility.svg)

# EffortLess Layered Menu Visibility

 By [domclic](https://profiles.wordpress.org/domclic/)

[Download](https://downloads.wordpress.org/plugin/effortless-layered-menu-visibility.1.0.10.zip)

 * [Details](https://wordpress.org/plugins/effortless-layered-menu-visibility/#description)
 * [Reviews](https://wordpress.org/plugins/effortless-layered-menu-visibility/#reviews)
 * [Development](https://wordpress.org/plugins/effortless-layered-menu-visibility/#developers)

 [Support](https://wordpress.org/support/plugin/effortless-layered-menu-visibility/)

## Description

Control which menu items are shown based on login status, user role, device type,
page type, or archive context. Rules are configured directly in the WordPress nav-
menu editor and evaluated on every page load.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

 *   [ domclic ](https://profiles.wordpress.org/domclic/)

[Translate “EffortLess Layered Menu Visibility” into your language.](https://translate.wordpress.org/projects/wp-plugins/effortless-layered-menu-visibility)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/effortless-layered-menu-visibility/),
check out the [SVN repository](https://plugins.svn.wordpress.org/effortless-layered-menu-visibility/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/effortless-layered-menu-visibility/)
by [RSS](https://plugins.trac.wordpress.org/log/effortless-layered-menu-visibility/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.10

 * Fix: renamed the donate-notice class to the plugin’s own ELLMV_ prefix (Plugin
   Check flagged the shared, un-prefixed class name).
 * Fix: corrected @package doc tag casing to EffortLess (capital L), matching the
   plugin’s display name.

#### 1.0.9

 * Fix: corrected “Contributors” in readme.txt to the actual WordPress.org owner
   username.

#### 1.0.8

 * Add: donate notice on the Menus admin screen.

#### 1.0.7

 * Fix: removed load_plugin_textdomain() call (discouraged since WP 4.6; translations
   load automatically).
 * Fix: removed “Domain Path” header pointing to a non-existent /languages folder.

#### 1.0.6

 * Fix: removed duplicate Plugin URI/Author URI header values flagged by the plugin
   review team.

#### 1.0.5

 * Update: Confirmed compatibility with WordPress 7.0.

#### 1.0.4

 * Update: plugin display name corrected to EffortLess Layered Menu Visibility.
 * Update: Tested up to WordPress 7.0.

#### 1.0.3

 * Add: children of a hidden parent menu item are now also hidden (cascades to any
   nesting depth).
 * Add: uninstall.php removes all _ellmv_visibility_rules post meta when the plugin
   is deleted.

#### 1.0.2

 * Fix: translations never loaded because load_textdomain was registered on plugins_loaded
   from inside a plugins_loaded callback; now called directly.
 * Remove: stale bug-reference comments from PHP and JS files.
 * Refactor: hoist wp_get_current_user() above the rule loop in is_menu_item_visible().

#### 1.0.1

 * Fix: Front-end filtering was completely inert — add_custom_fields hook moved 
   out of admin_init so it fires on the public front-end.
 * Fix: Shared POST field names caused every menu item to inherit all other items’
   rules on save; field names are now scoped per item ID.
 * Fix: PHP translation call inside the static JS file is now delivered via wp_localize_script.
 * Fix: “Add Rule” with no existing rules produced an empty type select; options
   are now built from server-provided data.
 * Fix: Value ‘0’ was silently dropped by empty(), making boolean negation (not 
   logged-in, not mobile, not archive) impossible.
 * Fix: JS rule index collision after a removal could overwrite a surviving rule
   on save; replaced with a monotonic counter.
 * Fix: Missing wp_unslash() before sanitize_text_field() on $_POST values.
 * Fix: Boolean rule types now use a Yes/No select and compare against ‘1’/’0′ instead
   of relying on PHP bool cast of an arbitrary string.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.0.10**
 *  Last updated **8 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.0.1**
 * Tags
 * [conditional](https://wordpress.org/plugins/tags/conditional/)[menu](https://wordpress.org/plugins/tags/menu/)
   [navigation](https://wordpress.org/plugins/tags/navigation/)[user](https://wordpress.org/plugins/tags/user/)
   [visibility](https://wordpress.org/plugins/tags/visibility/)
 *  [Advanced View](https://wordpress.org/plugins/effortless-layered-menu-visibility/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/effortless-layered-menu-visibility/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/effortless-layered-menu-visibility/reviews/)

## Contributors

 *   [ domclic ](https://profiles.wordpress.org/domclic/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/effortless-layered-menu-visibility/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://id7.dev/donate/)