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.
ContributorsTranslate “EffortLess Layered Menu Visibility” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by 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.