The Menu Visibility module adds conditional controls to WordPress navigation menus. You can show menu items to everyone, only logged-in users, or only logged-out visitors—helping you create smarter, more personalized navigation experiences without deleting items.
How to use
To enable the Menu Visibility module:
- Click on the “Admin Tools” category
- Search or scroll to locate the Menu Visibility module
- Click on the switch to enable
What’s next?
This module adds visibility controls to each navigation menu item in the WordPress menu editor:
- Show items to Everyone, Logged In users only, or Logged Out users only
- Settings live per menu item in Appearance > Menus
- Non-destructive: items aren’t deleted—just conditionally displayed on the frontend
1. Set Visibility per Menu Item
- Go to Appearance > Menus
- Click a menu item to expand its settings
- Under “Menu Item Visibility For”, choose one:
- Everyone
- Logged In
- Logged Out
- Click “Save Menu”
2. Options Explained
- Everyone: Default behavior; item shows for all visitors
- Logged In: Item shows only when
is_user_logged_in() is true
- Logged Out: Item shows only when
is_user_logged_in() is false
3. Best Practices
- Show “My Account,” “Dashboard,” or “Log out” to Logged In users
- Show “Log in” or “Register” to Logged Out users
- Keep critical navigation paths available to Everyone unless there’s a clear reason to restrict
4. Troubleshooting
- Options not visible in menu item:
- Ensure the module is enabled
- Confirm you have permissions:
edit_theme_options
- Changes not reflected on site:
- This only affects frontend menus; verify on the public site (not wp-admin)
- Clear page cache/CDN and hard-refresh
- Unexpected item visibility:
- Re-check the selected radio option on the item
- Verify you’re viewing the correct menu and location (theme menu assignments)
5. Compatibility & Notes
- Works with standard WordPress nav menus (Appearance > Menus)
- Filters run on frontend only (
wp_get_nav_menu_items)
- The module adds a fieldset to each menu item via
wp_nav_menu_item_custom_fields
- Data is stored in
_wpext_menu_item_visible meta with values: '' (Everyone), '1' (Logged In), '2' (Logged Out)
This module is perfect for:
- Personalizing navigation for members vs. visitors
- Simplifying menus based on authentication state
- Improving UX by showing only relevant links