Advanced Menu Items Visibility Control WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA
Control menu item visibility based on Login Status, WordPress User Roles, Restrict Content Pro Membership and Restrict Content Pro Access Levels.
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/guilamu/advanced-menu-items-visibility-control/releases/download/v1.3.4/advanced-menu-items-visibility-control.zip
Advanced Menu Items Visibility Control
A WordPress plugin that provides advanced visibility controls for navigation menu items based on user authentication status, roles, and Restrict Content Pro membership settings.
Description
Advanced Menu Items Visibility Control extends WordPress's native menu system by adding granular visibility options to individual menu items. Control which users see specific menu items based on their login status, WordPress roles, RCP membership levels, and access levels.
This plugin integrates seamlessly with Restrict Content Pro to provide membership-based menu visibility, while also working independently for role-based and login-status controls.
Features
- Login Status Control: Show menu items to everyone, only logged-in users, or only logged-out users
- WordPress Role Restrictions: Limit menu visibility to specific WordPress user roles
- RCP Membership Level Integration: Show menu items only to members with specific membership levels
- RCP Access Level Support: Control visibility based on RCP access levels (0-10+)
- Multiple Criteria Support: Combine multiple restrictions (all criteria must match)
- Translation Ready: Full internationalization support with included French translation
- Clean Admin UI: Accordion-style interface in the menu editor
- Smart Conditionals: RCP options only appear when "Logged In" is selected
- Automatic Child Hiding: Child menu items are hidden when parent items are hidden
Requirements
- WordPress 5.0 or higher
- PHP 7.0 or higher
- Restrict Content Pro (optional, required only for membership/access level features)
Installation
Manual Installation
- Download the plugin files
- Upload the
advanced-menu-items-visibility-controlfolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- Navigate to Appearance → Menus to configure visibility options
GitHub Installation
cd wp-content/plugins
git clone https://github.com/guilamu/Advanced-Menu-Items-Visibility-Control.git
Then activate the plugin in WordPress.
Translation
The plugin is fully translation-ready and includes the following translations:
Available Languages
- English (default)
- French (Français) - Complete translation included
Translation Files
The plugin includes:
languages/advanced-menu-items-visibility-control.pot- Template file for translatorslanguages/advanced-menu-items-visibility-control-fr_FR.po- French translation sourcelanguages/advanced-menu-items-visibility-control-fr_FR.mo- French translation (compiled)
Contributing Translations
To contribute a translation:
- Copy the
.potfile from thelanguages/folder - Rename it to
advanced-menu-items-visibility-control-{locale}.po(e.g.,de_DE.pofor German) - Use Poedit or another translation tool to translate the strings
- Compile the
.pofile to.moformat - Submit a pull request with both
.poand.mofiles
All translatable strings are wrapped with WordPress internationalization functions (__(), _e(), esc_html_e()).
## Usage
Basic Setup
- Go to Appearance → Menus in your WordPress dashboard
- Select a menu to edit or create a new one
- Click on any menu item to expand its settings
- Find the "Visibility Options" accordion section
- Configure your desired visibility rules
Visibility Options
1. Login Status
Choose one of the following:
- Show to Everyone (default): No restrictions
- Show only to Logged In Users: Menu item visible only to authenticated users
- Show only to Logged Out Users: Menu item visible only to guests
2. User Roles
Select one or more WordPress user roles. The menu item will only be visible to users who have at least one of the selected roles.
Available roles include:
- Administrator
- Editor
- Author
- Contributor
- Subscriber
- Custom roles (if defined)
3. Membership Levels (Requires RCP + "Logged In" status)
Select specific Restrict Content Pro membership levels. Only members with one of the selected membership levels will see the menu item.
Note: This option only appears when Restrict Content Pro is active and "Show only to Logged In Users" is selected.
4. Access Levels (Requires RCP + "Logged In" status)
Set a minimum RCP access level (0-10+). Only users with the specified access level or higher will see the menu item.
Note: This option only appears when Restrict Content Pro is active and "Show only to Logged In Users" is selected.
Logic Rules
When multiple restrictions are applied:
- Login Status is checked first
- If "Logged Out" is selected, all other checks are skipped
- If "Logged In" is selected, the user must match ALL selected criteria:
- Must have at least one of the selected roles (if any specified)
- Must have at least one of the selected membership levels (if any specified)
- Must meet the minimum access level (if specified)
Screenshots
The plugin adds an accordion-style "Visibility Options" section to each menu item in the WordPress menu editor, providing an intuitive interface for configuring all visibility rules.
Frequently Asked Questions
Does this plugin require Restrict Content Pro?
No. The plugin works independently for login status and role-based restrictions. RCP is only required if you want to use membership level or access level features.
What happens if I deactivate Restrict Content Pro?
The plugin will continue to work for login status and role-based restrictions. Membership and access level restrictions will be ignored.
Can I use multiple restrictions together?
Yes. When multiple restrictions are set, users must satisfy ALL criteria to see the menu item (AND logic, not OR).
Will child menu items be hidden automatically?
Yes. If a parent menu item is hidden, all its children are automatically hidden as well.
Does this affect menu performance?
The plugin uses efficient WordPress hooks and only processes menu items on the frontend. Performance impact is minimal.
Changelog
1.3.4
- Fix: Fixed "Plugin not found" error on details popup by using high-priority filter
plugins_api_resultto shield update payloads from mutation - Fix: Avoided PHP fatal errors by replacing dynamic
get_plugin_data()calls with static constants - Improved: Replaced PHP 8.0+ functions with backward-compatible code for PHP 7.x support
- Improved: Support for custom plugin folder names during checks and updates
1.3.3
- Fix: Resolved a fatal error when clicking "View details" due to Parsedown 1.8.0 removing the deprecated
setSafeMode()method (updated tosetMarkupEscaped()).
1.3.2
- New: Added CSS pattern banner in plugin details modal (geometric B&W background with styled h2 title pill, no external image required)
1.3.1
- Improved: Rewrote GitHub updater to match reference template (README.md parsing, Parsedown, tables_to_divs, plugin_info_css)
- New: Added "View details" thickbox link in plugin row meta
- New: Added Parsedown.php for Markdown-to-HTML conversion in plugin info modal
1.3.0
- New: Integrated Guilamu Bug Reporter support
- New: Added "Report a Bug" link in plugins list
- Improved: Added version constant for centralized version management
1.2.4
- Critical Fix: Fixed RCP Access Level checking which was non-functional
1.2.3
- Critical Fix: Fixed RCP membership level detection that returned stale/cached data
- Implemented direct membership query that bypasses RCP's
rcp_get_customer_membership_level_names()API caching bug - Removed non-functional
function_exists()check forrcp_user_has_access_level() - Changed membership level comparison from IDs to names for more reliable matching
1.2.2
- Security: Added capability check in save function
- Security: Fixed nonce duplication issue
- Security: Replaced
_e()withesc_html_e()for proper output escaping - Performance: Added transient caching for GitHub API calls
- Performance: Implemented
update_meta_cache()to prevent N+1 queries - Architecture: Externalized CSS/JS to separate files in
assets/ - Architecture: Refactored auto-update to class-based approach (
includes/class-github-updater.php) - Architecture: Added
uninstall.phpfor clean data removal - Standards: Changed to
admin_enqueue_scriptshook per WordPress standards
1.2.1
- Added multilingual support (i18n)
- Included French translation (fr_FR)
- Added POT file for translators
- Improved text domain implementation
1.1
- Added plugin information API for update details modal
- Enhanced GitHub update integration
1.0
- Initial release
- Login status control (everyone/logged in/logged out)
- WordPress role-based restrictions
- Restrict Content Pro membership level integration
- Restrict Content Pro access level support
- Accordion-style admin interface
- Automatic parent-child menu handling
Author
Guilamu
Support
For bug reports, feature requests, or contributions, please visit the GitHub repository.
Note: This plugin modifies menu visibility on the frontend. Always test your menu configurations with different user roles and login states to ensure they work as expected.
Releases
11 releases. Each count is every asset in that release; expand a row for the breakdown.