Very Customizable Navigation Menus
Build advanced WordPress navigation systems with block-authored menus, mega panels, conditional visibility, and flexible placement.
by Andrew Cook · github.com/awcook97/wp-very-customizable-navigation-menus · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/awcook97/wp-very-customizable-navigation-menus/archive/refs/heads/main.zipBuild advanced WordPress navigation systems with block-authored menus, mega panels, conditional visibility, and flexible placement.
Description
Very Customizable Navigation Menus is a WordPress plugin for building highly flexible menu systems without depending on a specific theme.
This first release includes:
- A dedicated
Custom Menuspost type for plugin-managed menus - Gutenberg blocks for menu items, menu groups, and mega panels
- A shared frontend renderer used by a block, shortcode, and widget
- Responsive drawer behavior for smaller screens
- Style presets powered by CSS custom properties
- Common visibility rules for login state, roles, URLs, content IDs, scheduling, and device mode
Installation
- Upload the plugin zip in the WordPress admin under
Plugins > Add New > Upload Plugin. - Activate the plugin.
- Go to
Custom Menusin wp-admin and create a new menu. - Add menu items, groups, and mega panels in the block editor.
- Place the menu using the
Render Custom Menublock, the widget, or the shortcode.
Usage
Create a menu
- Open
Custom Menus > Add New. - Add one or more
Menu Itemblocks. - Nest additional
Menu Itemblocks to create dropdowns. - Add a
Mega Panelblock inside a parent item for richer multi-column navigation. - Use the sidebar controls to configure links, labels, badges, styling hints, and visibility rules.
Place a menu in content or templates
Use the Render Custom Menu block and select the menu you want to display.
Place a menu with shortcode
[vcnm_menu id="123"]
Optional shortcode attributes:
labelpresetlayoutbreakpointmobile_labelclass
Example:
[vcnm_menu id="123" preset="ocean" layout="horizontal" breakpoint="960" mobile_label="Browse"]
Place a menu with the widget
Add the Very Customizable Menu widget in Appearance > Widgets or the block-based widgets screen and choose the menu you want to render.
Frequently Asked Questions
Does this replace my theme's existing menu automatically?
No. This version is designed for explicit placement through the plugin's block, shortcode, or widget so it works safely with more themes.
Does this require Node on the server?
No. The plugin ships with prewritten JavaScript files and does not require Node on your WordPress server.
Can I build mega menus?
Yes. Add a Mega Panel inside a parent menu item and then place groups or links inside the panel.
Can I hide menu items for logged-out users or by role?
Yes. Visibility controls include audience, roles, page/content IDs, URL matching, scheduling, and device targeting.
Changelog
0.1.0
- Initial release
- Added custom menu post type
- Added Gutenberg menu builder blocks
- Added shared renderer with responsive drawer support
- Added block, shortcode, and widget placement methods
- Added styling presets and common visibility rules