Апісанне
What if the best menu plugin didn’t cost anything?
You’ve seen the pattern: install a menu plugin, get excited, then hit the paywall. The mega menu? Pro. The cart icon? Pro. The nice themes? Pro. Giuliomax Menu Builder breaks that pattern. Every single feature is free. Not a teaser version — the whole thing.
Build a navigation bar that looks like it was custom-designed for your brand, in minutes. Pick one of 50 designer themes and go live in one click, or fine-tune every pixel with the visual editor. Drop the MenuX block into your header in the Site Editor, or paste [menux] anywhere. Desktop, tablet, phone — it just looks right.
💎 Why “free” actually means free here
No watermarks. No ads in your dashboard. No “Upgrade” buttons taunting you next to locked features. No newsletter blackmail. Everything below works the moment you click Activate:
Navigation
- ✅ Mega menus (4 columns, 20 industry templates)
- ✅ Multi-level dropdowns
- ✅ Visual drag-and-drop builder
- ✅ Import from WordPress menus
- ✅ Sticky header with shrink-on-scroll
- ✅ Built-in menu & page search
Conversion
- ✅ CTA button items
- ✅ Announcement bar with live countdown
- ✅ Badges (“New”, “Hot”) & notification dots
- ✅ Live WooCommerce cart with mini-cart
- ✅ Smart visibility (role, device, page, schedule, campaign)
Design
- ✅ 50 one-click themes in 10 style categories
- ✅ 70+ Google Fonts with live preview
- ✅ Visual gradient picker
- ✅ Hover & entrance animations
- ✅ Logo placement with pill/circle shapes
- ✅ Dark mode (Light / Dark / Auto)
- ✅ Scroll progress bar
- ✅ Scroll spy (auto-highlight current section)
Mobile
- ✅ 4 opening styles (dropdown, fullscreen, left/right drawer)
- ✅ 3 hamburger icon styles
- ✅ Mobile-specific text colors
- ✅ Overlay with blur effect
- ✅ Accordion submenus
Platform
- ✅ Gutenberg block for FSE themes
- ✅ Shortcode for any builder (Elementor, Divi, WPBakery)
- ✅ WPML / Polylang / TranslatePress support
- ✅ WCAG 2.2 AA accessibility
- ✅ One-file export/import
- ✅ Real-time 3-device preview
That’s 30+ features other plugins split between Free and Pro — here they’re just… features.
💰 One plugin instead of five
Other plugins split these features across separate paid products — a mega menu add-on, a cart widget, an announcement bar, a sticky header, a styling pack. Each one costs money, loads its own scripts, fights the others’ CSS and needs its own update cycle.
MenuX replaces all of them with a single consistent plugin. $0. If it saves you time or money, a small donation keeps development going — that’s the whole business model.
👤 Who is it for?
- Shop owners — live cart in the menu, countdown sales bar, “Offers” badge on the promo category. Your navigation becomes a salesperson
- Restaurants & local business — show “🍕 Lunch Menu” only between 12:00 and 15:00 with time-based visibility. Yes, really
- Agencies & freelancers — style a menu once, export the config file, import it on every client site. Minutes instead of hours, on every project
- Bloggers & creators — 50 themes mean your nav matches your brand without hiring a designer; the scroll progress bar keeps readers engaged
- Marketers — CTA buttons, campaign-targeted menu items (UTM visibility), countdown urgency — A/B test your navigation like a landing page
- Membership & community sites — different menus for logged-in members, per-role items, login/logout aware navigation out of the box
🚀 Launch in 60 seconds
- 50 one-click themes — from sleek dark navs to playful gradients, filter by mood (Dark, Minimal, Vibrant, Glass, Corporate, Retro and more), preview live, apply with one click. Your menu goes from default-theme-boring to “wait, what plugin is that?” instantly
- Import your existing menu — already built a menu in Appearance Menus? One click pulls it into the builder, sub-items included. Nothing to rebuild
- A bee shows you around — first time? Our 🐝 onboarding guide walks you through setup so you’re never staring at an empty screen
🎯 Built to convert, not just navigate
Your menu is prime real estate — the one element on every single page. Make it work for you:
- CTA Button items — turn “Book Now”, “Get a Quote” or “Start Free Trial” into a real button with its own colors, hover effect and rounded corners. It sits right in your menu, impossible to miss
- Announcement Bar with live countdown — run flash sales with a ticking timer that creates real urgency. Dismissible, brandable, clickable
- Badges & notification dots — highlight “New” or “Hot” items so visitors’ eyes go exactly where you want
- Smart visibility — show different items to logged-in customers, mobile visitors, specific pages, certain hours of the day, or traffic from a specific campaign. The right menu for the right person, automatically
🛒 Your shop’s command center — free
Other plugins charge for this. Here it’s included:
- Live cart icon — cart, bag or basket, with a count badge that updates the instant something is added. No refresh
- Running subtotal — shoppers always know where they stand
- Mini-cart dropdown — peek at the cart on hover or click, straight to checkout in fewer clicks
- Fully brandable — icon style, position, colors, badge — all yours
- Zero config debt — no WooCommerce? The cart silently waits and activates itself the day you install it
⚡ Mega menus like the big brands — free
The multi-column dropdowns you see on Apple-sized websites, built visually in your dashboard:
- Up to 4 columns of links, headings, dividers, images, shortcodes or blocks — yes, you can embed forms, latest-posts widgets or product grids via shortcode
- Icons + descriptions per link — visitors know where they’re going before they click
- 20 industry templates — SaaS, E-Commerce, Agency, Restaurant, Travel, Healthcare, Real Estate, Law Firm, Finance, Fashion, Hotel, Nonprofit, Events, Automotive, Gaming and more, loaded in one click
- Every mega menu unique — per-menu backgrounds (solids or gradients), spacing, colors and corner rounding from a dedicated 🎨 Appearance tab
- Forgiving hover — the panel waits for the mouse instead of vanishing mid-journey
- Mobile-smart — choose how it folds on phones: a stacked accordion list, a compact 2-column grid (perfect for category menus), or hidden entirely
📱 Mobile menus people actually enjoy
- 4 opening styles — classic dropdown, immersive fullscreen, or a drawer sliding from either side
- 3 hamburger icon styles — Classic, Modern, Minimal — in your brand colors, on a guaranteed-transparent button (we fight your theme’s CSS so you don’t have to)
- Mobile-specific text colors — normal, hover and active states, independent from desktop
- Overlay magic — tint it, fade it, even blur the page behind your menu
- Accordion submenus — optional one-at-a-time expansion keeps long menus tidy
✨ Design without compromise
- Visual drag-and-drop builder — every item expands into clean labelled sections. You will never touch code
- 70+ Google Fonts — searchable picker with live preview; size, weight, spacing, transforms
- Gradient picker — paint with rich gradients using a visual compass — no hex codes, no CSS
- Hover animations — Lift, Scale, Glow, Underline and more; plus entrance animations with stagger
- Sticky header — stays visible on scroll, mirrors your menu automatically or gets its own shrink-on-scroll look
- Your logo, your way — drop it in the bar, position it, round it into a circle or pill
- Dark mode — Light, Dark, or Auto-follow the visitor’s system
- Built-in search — a magnifying glass that searches your menu and the text on the page
- Real-time preview — desktop, tablet and mobile views while you edit, before anyone else sees it
♿ Accessibility is one switch away
Flip the master toggle and get full WCAG 2.2 AA: keyboard navigation, visible focus rings, skip links, ARIA labels, comfortable touch targets, reduced-motion respect and high-contrast mode. Inclusive by default, not as an afterthought.
⚡ Light by design. Private by default
- Server-side rendering — your menu is plain HTML and CSS generated on the server. No React bundle, no framework tax, no layout shift
- Zero external requests — Font Awesome is bundled locally; nothing loads from a CDN. Google Fonts connect only if you explicitly pick one
- GDPR-friendly out of the box — no tracking, no analytics calls, no cookies, no data sent anywhere. Nothing to add to your privacy policy
- Cache-plugin native — static output that WP Rocket, LiteSpeed and W3TC can cache aggressively
🌍 Works with your stack
- Site Editor / FSE themes — drag the MenuX block into any header. Done
- Page builders — Elementor, Divi, WPBakery: paste
[menux]in a shortcode element - WPML · Polylang · TranslatePress — a label per language on every item, detected automatically
- Caching plugins — server-side HTML, friends with WP Rocket, LiteSpeed and W3TC
- Theme switches — your menu lives in the plugin, not the theme. Change themes, keep everything
- Move between sites — export the entire setup to a file, import it elsewhere in seconds
🔌 Get started
- Open Giuliomax Menu Builder in your admin sidebar
- Add items in the drag-and-drop builder — or import your existing WP menu in one click
- Apply one of the 50 themes, or style it yourself
- Drop the MenuX block in your header (or paste
[menux]anywhere) - Optional: enable the Mega Menu, WooCommerce cart, or Announcement Bar from the sidebar
That’s it. No license keys, no account, no credit card field hiding in step 5.
Still deciding? Install it, click one theme, and look at your site. That’s 90 seconds. If it’s not for you, deactivate — your theme’s old menu is exactly where you left it, and deleting the plugin removes every trace from your database. There is literally nothing to lose.
☕ Keep it free
This plugin is free and always will be. If it saves you time or money, a small donation keeps development going:
👉 https://www.paypal.com/paypalme/giuliosw
Every contribution genuinely matters. Thank you.
External Services
This plugin may connect to the following external service:
Google Fonts (optional)
If a Google Font name is entered in the Style panel (Typography tab), the plugin loads that font’s stylesheet from Google’s servers at https://fonts.googleapis.com. This request is made only when a Google Font is explicitly configured by the site administrator. The font name and the visitor’s IP address are sent to Google as part of the standard HTTP request.
- Terms of service: https://developers.google.com/terms
- Privacy policy: https://policies.google.com/privacy
Font Awesome icons are bundled locally within the plugin and do not load from any external server.
Screenshots

















Блокі
Гэты плагін прадастаўляе 1 блок.
- MenuX — Menu Renders a MenuX navigation menu. Embed it in FSE template headers, template parts or any page template.
Ўсталёўка
From the WordPress Plugin Directory (recommended)
- In your WordPress admin go to Plugins Add New
- Search for Giuliomax Menu Builder
- Click Install Now, then Activate
Manual installation
- Download the zip from the plugin page or from GitHub
- Go to Plugins Add New Upload Plugin and upload the zip, or extract it to
/wp-content/plugins/ - Activate the plugin from Plugins Installed Plugins
First setup
- Go to MenuX in the admin sidebar
- Open Menu Structure and add your navigation items
- FSE / block themes — open the Site Editor, click + in any header template part, search for MenuX and drop the block in; pick the menu location from the block sidebar. Done — no code needed.
- Classic themes / page builders — copy the shortcode
[menux]and paste it into any page, post, widget or template area; use[menux location="footer"]to show a location-specific menu. - Use the Style, Themes and other panels to customise colors, typography, mobile behavior and more.
Requirements
- WordPress 5.8 or higher
- PHP 7.4 or higher
Часта задаваныя пытанні
-
The easiest way: open any page or your site header in the editor, click the + inserter and search for MenuX — drop the block in and you’re done, no code required. Prefer a shortcode? Just type
[menux]into any page, post or widget. To show different menus in different spots (header, footer, sidebar…), pick the location from the block sidebar or pass it to the shortcode as[menux location="footer"]. -
Is it really free? Are there ads, watermarks or upsells?
-
Yes, genuinely free. Every feature described here — mega menus, the WooCommerce cart, 50 themes, the Announcement Bar with countdown, accessibility, Google Fonts, the Gutenberg block — is included with no paywall, no “upgrade now” banners inside the builder, no ads and no watermark on your menu. If the plugin saves you time, a small voluntary donation is welcome, but nothing is locked behind it.
-
No! Open the builder, click the 📋 Import WP tab, pick your existing menu from the dropdown and hit Import. All items — pages, custom links and one level of sub-items — land in the MenuX builder ready to style. It takes about ten seconds.
-
MenuX renders its own menu wherever you place the block or shortcode — it doesn’t delete your theme’s menu. To hide the old one: in FSE themes, remove the Navigation block from the header template part in the Site Editor; in classic themes, either use the WP Menu Integration panel (which intercepts
wp_nav_menu()and replaces the theme menu output directly) or unassign the menu from the theme location in Appearance Menus. -
One configuration drives up to four menu locations: Primary, Footer, Sidebar and Mobile. Assign each item to a location in the builder, then place each menu with
[menux location="footer"]or by picking the location in the block sidebar. Items default to Primary. -
Yes — per-item page conditions let you show an item only on specific page IDs, and you can combine that with device, role, login-state, schedule and campaign (UTM) conditions. For structurally different menus in different areas, use the four locations (Primary / Footer / Sidebar / Mobile).
-
Open any item in the builder and find the 📂 Submenu section. Click + Add submenu, then + Add sub-item — each sub-item can be a WordPress page or a custom link, with its own label per language, icon and tab target. On desktop the submenu opens on hover; on mobile it expands inline when tapped. No code needed.
-
Open the item in the builder and enable the 🎯 CTA Button toggle. Four controls appear: background color, text color, hover color and border-radius (0 for square corners, 50 for a pill shape). The item renders as a real button in the menu bar — with a hover effect — and the styling survives theme changes and export/import.
-
Yes. Every item has a ⚙️ Schedule & Conditions section with a From/To date-time range — perfect for limited-time promo links. You can also restrict an item to a daily time window (e.g. show “Lunch Menu” only 12:00–15:00), and the window can even cross midnight for night-time businesses.
-
Can I show items only to logged-in users or specific roles?
-
Yes. Each item has a visibility dropdown: everyone, logged-in only, logged-out only, or any specific WordPress role (Administrator, Editor, Subscriber, custom roles…). Great for member areas, client portals and “My Account” links that only appear after login.
-
How do I add a logo?
-
Go to MenuX Logo in the admin sidebar, upload or pick an image, then set its position inside the bar (left, center or right), width, height, margins and border-radius (handy for circular or pill-shaped logos). The logo appears immediately in the live preview.
-
Open MenuX Style Sticky and enable the sticky header. By default it mirrors your main menu’s look (“Match main menu”); turn that off to give the sticky bar its own background, shadow, padding and alignment. You can also enable a shrink-on-scroll effect and an auto-hide behavior.
-
How do I add a search bar?
-
Enable it from the Search panel in the admin. A magnifying-glass icon is added to the menu; clicking it opens a modal with two tabs — search your menu items, or search the text on the current page with keyboard prev/next navigation.
-
Does it work in Full Site Editing (FSE) themes like Twenty Twenty-Five?
-
Yes — and it couldn’t be simpler. From Appearance Editor, open the header template part, click the + inserter, search for MenuX, and drop the MenuX — Menu block where you want the navigation. Use the block sidebar to pick the menu location. Font Awesome icons, your configured Google Font, and the mega-menu / hamburger JavaScript all load correctly right inside the editor preview, so you see the real thing as you build.
-
Does it work with page builders?
-
Yes. In the WordPress block editor use the native MenuX block. In Elementor, Divi, WPBakery and other builders just add a Shortcode element with
[menux]— both produce the same menu. -
Does it work with caching plugins?
-
Yes. The menu HTML is generated server-side and compatible with WP Rocket, LiteSpeed Cache, W3 Total Cache and similar plugins.
-
How do I add Font Awesome icons?
-
In the menu builder, each item has an icon field. Type the FA class name, e.g.
fa-solid fa-house, or use the 🎨 Pick button to browse and search icons visually. Font Awesome 6 Free is loaded automatically. -
Is it compatible with WPML / Polylang / TranslatePress?
-
Yes. This plugin automatically detects installed multilingual plugins and lets you set a label per language for each menu item.
-
Where is the mobile breakpoint?
-
Go to MenuX Style Mobile and set your preferred pixel breakpoint, or choose Auto to detect based on available space. Default is 768px.
-
Yes. In Style Hamburger 🔤 Mobile link text you’ll find three dedicated color pickers — Normal, Hover and Active — that apply only inside the mobile menu. Leave them empty to inherit your desktop menu colors.
-
That was your theme’s own
<button>styling bleeding through. Since version 3.5.0 the plugin forcefully resets the hamburger background to transparent on every theme — and if you set a custom background color, that wins too. Just update to the latest version; no configuration needed. -
How do I use the preset themes?
-
In the admin sidebar click ✨ Themes. Use the category chips (Dark, Minimal, Vibrant, Creative, Corporate, Nature, Elegant, Retro, Glass, Playful) to filter the 50 preset themes, then click any card to apply it instantly and preview it live.
-
Go to ⚡ Mega Menu in the sidebar, enable the toggle next to a first-level nav item, then click ⚡ Edit Columns ▶. Add up to 4 columns, fill them with headings, links (with icon and description), dividers, images or shortcodes. Click 🎨 Appearance to give this specific mega menu its own background, colors and spacing. Hit ✨ Presets to load one of 20 ready-made templates.
-
How do I add an Announcement Bar?
-
Go to MenuX Announcement in the admin sidebar, check Enable Announcement Bar, enter your message, optionally add a link and configure the colors. Choose Above or Below to control where the bar appears relative to the navigation. To add a countdown, enable the Countdown Timer toggle, pick a target date/time and optionally set an expired message.
-
Yes, since version 3.0. Click ⚡ Edit Columns ▶ on any enabled item, then switch to the 🎨 Appearance tab. Changes apply only to that item’s panel and override the global defaults.
-
Does the WooCommerce cart work with all themes?
-
Yes. The cart icon is part of the menu output, so it works with any theme whether you place the menu via the MenuX block or the
[menux]shortcode. The mini-cart uses WooCommerce’s native fragments system for live updates. -
It works with classic PHP themes that call
wp_nav_menu()directly (e.g. GeneratePress, OceanWP, Neve, Kadence). Themes that use a custom header builder (e.g. Astra Header Builder) bypasswp_nav_menu()internally, so the integration cannot intercept them — in that case just drop the MenuX block (or the[menux]shortcode) into your header instead. -
No. Your menu items and styles are stored by the plugin, not by the theme. When you change theme the menu stays intact — you only need to place the block (or
[menux]shortcode) again in the new theme’s header. -
Yes. Use Import / Export: export your full configuration (items, styles, mega menus, cart, announcement and all settings) to a JSON file, then import it on another site to recreate the menu exactly. It’s also a convenient backup.
-
Yes. A single master toggle enables a full WCAG 2.2 AA layer: keyboard navigation, a visible focus ring, a skip link, ARIA labels, adequate touch-target sizes, reduced-motion support and a high-contrast mode.
-
Will it slow down my site?
-
No. The menu HTML and its CSS are generated server-side, Font Awesome is bundled locally (no external request), and Google Fonts load only if you actually choose one. There’s no heavy framework, so the footprint stays light and caching-plugin friendly.
-
Is it GDPR compliant?
-
The plugin makes zero external requests by default: no tracking, no analytics, no cookies, no CDN calls — Font Awesome is bundled locally. The only optional external connection is Google Fonts, and only if you explicitly choose one in the Typography settings (in that case Google receives the visitor’s IP as part of the standard font request — see the External Services section). With no Google Font selected, there is nothing to add to your privacy policy.
-
Can I reset everything and start fresh?
-
Yes. Go to MenuX Tools Reset Everything and confirm. This permanently deletes all menu items, styles and integration settings.
-
What happens to my data if I uninstall the plugin?
-
Deactivating keeps everything — you can toggle the plugin off and on without losing your setup. Deleting the plugin from the Plugins screen removes all its options and cached data from your database completely. If you might come back later, export your configuration to a file first — importing it restores everything exactly.
-
Can I use custom CSS?
-
You can target the
.menux-containerwrapper and its child elements from your theme’s stylesheet or from any “Additional CSS” field in the WordPress Customizer.
Водгукі
Удзельнікі і распрацоўшчыкі
“Giuliomax Menu Builder” is open source software. The following people have contributed to this plugin.
УдзельнікіПеракласці “Giuliomax Menu Builder” на вашу мову.
Зацікаўлены ў распрацоўцы?
Праглядзіце код, праверце SVN рэпазітарый, або падпішыцеся на журнал распрацоўкі па RSS.
Журнал змяненняў
3.8.2
- New: Live phone preview in Mobile tab — the Mobile settings tab now shows a sticky phone mockup on the right that updates in real time as you change any mobile setting (open style, overlay color/opacity, hamburger color/alignment, link color, drawer width, fullscreen alignment)
3.8.1
- Fix: Sub-screen visible on desktop —
li.menux-mega-subscreen-liis now hidden globally (display:none!important) and only revealed inside the mobile context, so it never appears as a stray list item in the desktop nav bar - Fix: Dark screen on mobile open — replaced the
transform + pointer-eventsapproach withdisplay:flex + @keyframesanimation; the sub-screen is invisible until explicitly opened, eliminating the full-screen dark flash - Fix: Text invisible on dark overlays — when
mobile_link_coloris not configured and the menu uses fullscreen or drawer style, the sub-screen text now defaults to#ffffffinstead of#374151 - Fix: Back button animation — closing the sub-screen now triggers a slide-out animation (
menux-ss-closing) with a 300 ms cleanup timeout; the whole menu closing removes both classes instantly with no animation - Fix: Sub-screen
menux-ss-closingclass not cleaned up —bmCloseMenu()now removes bothmenux-ss-openandmenux-ss-closingand clears the pending timer to prevent stale state on reopen
3.8.0
- New: Mobile mega menu push-navigation — tapping a mega menu item on mobile now slides in a dedicated full-screen panel showing only those links, with a back button at the top (like mediaworld.it / euronics). This replaces the accordion approach entirely, giving a native app feel and eliminating all font, alignment and bullet-point inconsistencies
- Fix: Dropdown indicator on mobile — the
▾chevron is replaced with a right-pointing›arrow, correctly signalling push navigation rather than expand-in-place - Change: Mobile Layout option — the “2-column grid” choice has been removed; the setting now has two values: “Visible on mobile” (push-screen) and “Hidden on mobile”
3.7.1
- Fix: Mobile mega menu polish — removed the stray focus box that appeared around a section heading after tapping it (the keyboard focus ring is preserved for accessibility); forced all mega links and headings to align left on mobile regardless of the per-column alignment set for desktop; mobile mega links now show just their icon + label (the secondary description is hidden) for a cleaner, lighter list
3.7.0
- Fix: Mega menus were unreadable on mobile — preset colours and formatting (designed for a coloured desktop panel) leaked onto the mobile view, producing broken, often unreadable combinations (e.g. light text on the transparent mobile list). On mobile the mega panel is now fully neutralised: no preset background, shadow, radius, fonts or colours — links read like the rest of the mobile menu, using the standard submenu link colour
- New: Mobile mega menu is now a clean nested accordion — tapping a mega menu item expands it; inside, each section heading becomes a tappable sub-accordion that reveals its own links. Sub-sections start collapsed for a compact, easy-to-scan list. Links placed without a section heading stay always-visible at the top. Full keyboard support (Enter/Space) and ARIA expanded state included
- Improvement: Per-panel and per-item appearance now applies on desktop only — the visual Appearance overrides remain exactly as designed on desktop, while mobile always falls back to the neutral, readable accordion
- Improvement: CSS cache is now version-aware — a plugin update immediately serves freshly generated CSS instead of waiting for a settings save or the 24-hour cache expiry
- Housekeeping: Removed the redundant Global Default Colors section from the Mega Menu panel — the per-item 🎨 Appearance tab already covers panel background and all mega colours
3.6.1
- Fix: Mega editor Appearance tab trapped the user — switching to the Appearance tab hid the entire toolbar including the tab buttons themselves, making it impossible to return to Content and causing the live preview to disappear; the toolbar is now always visible and only the column-editing tools are hidden when Appearance is active
- New: Per-panel Max Width — the Appearance tab now includes a “Panel Max Width (px)” field (400–2400); when set, the mega panel box is constrained and centred via
max-width+margin: auto, overriding any global inner-content cap; leaving the field empty falls back to full-width behaviour - Fix: Fatal parse error in help-content.php — an unescaped apostrophe inside a single-quoted PHP string caused a parse error that crashed the entire WordPress admin; apostrophe now correctly escaped (
doesn\'t) - Improvement: Delete button visibility — the item delete button in Menu Structure was nearly invisible against the white background; it is now shown in red at rest and deepens on hover, making destructive intent immediately clear
- Improvement: Drag handle affordance — the drag handle icon in Menu Structure now shows a coloured highlight on row hover and a short “Grab the handle to reorder” label, making the reorder mechanic discoverable for first-time users
3.6.0
- New: Scroll Spy — automatically highlights the nav link for the section currently visible in the viewport as the user scrolls; activate in Style Layout 🎯 Scroll Spy; set a trigger offset (default 80 px — sticky bar height is added automatically at runtime); enable smooth scroll with History API hash updates and ARIA live region announcements for screen readers; the last section always activates when the page is scrolled to the very bottom; active section links share the visual treatment defined in the Colors Active Link tab
- New: Responsive Mega Menu Mobile Layout — a three-mode selector replaces the old “Disable on mobile” checkbox in the Mega Menu panel: Stacked List (all columns merged into a tappable accordion, same behavior as before), 2-Column Grid (columns kept side-by-side in a CSS grid — ideal for category or product menus), or Hidden (panel not rendered on mobile); existing menus automatically retain their previous behavior via back-compat migration
- Improvement: 8 new mega menu presets (20 total) — the preset picker now ships 20 industry templates: SaaS, E-Commerce, Agency, Restaurant, Travel, Healthcare, Real Estate, Law Firm, Finance, Fashion, Hotel, Nonprofit, Events, Automotive, Gaming, Fitness, Beauty & Wellness, Tech Startup, Portfolio, and Education; load any preset in one click from the 🎨 Appearance ✨ Presets tab
- Improvement: Global mega menu color defaults — a new Color Defaults section in Mega Menu Appearance lets you set site-wide default colors for mega panel links, headings and accent/icons; per-item overrides remain possible from the individual Appearance tab
- Improvement: Enforce contrast on active links — a new checkbox in Colors Active Link forces a WCAG-compliant contrast ratio between the active link text and its background; a live badge shows the ratio and WCAG grade (AA / AAA / Fail) as you pick colors
- Improvement: Style panel tab state preserved after save — the open tab (Colors, Typo, Layout…) is no longer reset to Themes after saving; the previously active tab is re-selected automatically
- Improvement: Onboarding tutorial overhauled — expanded from 5 to 11 steps, one per major admin section (Structure, Logo, Mega Menu, Themes, Colors, Typography, Layout, Mobile, Announcement, Search, WooCommerce), each with concrete action guidance
- Improvement: Color picker opacity restored on re-enable — re-checking a color field’s enable checkbox now restores the picker at its last saved opacity instead of snapping back to 1.0
- Fix: Device visibility condition — the PHP save handler now correctly handles separate ‘mobile’ and ‘tablet’ condition values via
wp_is_mobile(); previously ‘tablet’ was treated identically to ‘mobile’ at the database level, leading to inconsistent behavior - Fix: Conditional roles blocked logged-out users — items with Visibility set to “logged-out only” AND a Roles condition set were incorrectly hidden for guests; the roles check is now gated behind
is_user_logged_in()so it never runs for unauthenticated visitors - Fix: CSS cache transient had no expiry —
set_transient('menux_css_cache')was called without an expiration argument, potentially allowing stale cached CSS to persist indefinitely after design changes; now expires after 24 hours - Fix: Import — mega_style, mega_mobile_layout and scroll spy settings not sanitized — these five keys were silently dropped during configuration import; all are now sanitized and preserved correctly
3.5.0
- New: CTA Button style per item — enable the 🎯 CTA toggle on any menu item and choose its background, text color, hover color and border-radius; the link becomes a styled call-to-action button without touching your theme’s CSS; settings are saved per item and survive export/import
- New: Import from WordPress Menus — a new “📋 Import WP” tab in the builder lets you choose any menu created in Appearance Menus and import all its items (pages and custom links, with one level of sub-items) into the MenuX builder in one click; a confirmation prompt prevents accidental overwrites
- Improvement: Mobile hamburger always transparent by default —
!importantguards onbackground,border,appearanceandbox-shadowprevent theme CSS from accidentally turning the button grey or black; custom background colors also get!importantso they actually apply - Improvement: Mobile text colors — three new color fields (Normal, Hover, Active) in the Style Hamburger section let you control the link text color inside the mobile menu independently of the desktop menu; empty = inherits theme/menu colors
- Fix: Close button (✕) colors now work on all themes — the fallback was
color:inherit, which on many themes resolved to the<button>default (often near-black on dark overlays); replaced with an explicit#333333default and added!importantguards so the color and background settings are always respected - Fix: Sticky header on mobile no longer clips the hamburger — adds
padding-top:8px; padding-bottom:8pxinside the mobile media query for.menux-sticky-fixed, giving the button breathing room - Fix: Mega menu resize listeners accumulated per item — every mega menu item added its own
window resizehandler; now a single handler per nav covers all open panels - Fix: Mega menu outside-click handler duplicated per nav — with multiple
[menux]shortcodes on one page, every click fired N handlers; now a single guardeddocumenthandler covers all navs - Fix: Close button (✕) now returns focus to the hamburger — clicking the close button in fullscreen/drawer mode now moves focus back to the hamburger, matching the Escape key behavior and fixing a WCAG 2.4.3 violation
- Fix: Mega panel sub-links now close the panel on mobile — tapping a link inside an open mega panel previously left the panel visible behind the destination page; the panel now closes immediately on link click
3.4.0
- New: 50 preset themes with filterable style categories — the Themes panel now offers 50 professionally designed themes (up from 20), organized into 10 style categories: 🌙 Dark, ⚪ Minimal, 🌈 Vibrant, 🎨 Creative, 💼 Corporate, 🌿 Nature, 💎 Elegant, 📼 Retro, 🧊 Glass, 🎈 Playful; a row of interactive category chip buttons above the grid lets you narrow the theme list instantly — each chip shows the number of themes it contains; 30 new original themes added including Obsidian Gold, Graphite Ice, Neon Synthwave, Holographic, Miami 80s, Burgundy Velvet, Frosted Aqua, Bubblegum, Vaporwave and more
3.3.2
- Fix: Announcement Bar width and gap — the bar is now wrapped in a shared flex-column container with the nav, so it always matches the menu width exactly and sits flush against it with no white-space gap, regardless of the theme layout
- Fix: PHP fatal error on admin pages — an unescaped apostrophe in
help-content.phpcaused a parse error that crashed the entire WordPress admin; fixed by escaping the offending character (bar\'s) - Fix: Announcement Bar section missing from help modal — the 📢 Announcement panel was not documented in the contextual help; a full section covering all fields (message, link, colors, position, dismissal, countdown timer) has been added
- Improvement: Help modal display instructions — the “How to display the menu” entry now leads with the native MenuX block (no-code path) instead of the shortcode
3.3.1
- New: Countdown Timer in Announcement Bar — attach a live ticking countdown (days / hours / minutes / seconds) to any announcement; set a target date/time, a label (e.g. “Ends in:”) and an optional expired message; initial values are rendered server-side to eliminate first-paint flash; the days segment hides automatically when it reaches zero
- Fix: Stale open-state on mobile after closing the menu — second-level and third-level submenus that were open before the hamburger close remained visually open on the next open;
bmCloseMenu()now collapses all nested.mobile-sm-openlinks and resets mega-menu.menux-openstate includingaria-expanded - Fix: Accordion not fully collapsing sibling branches — closing a sibling item on mobile only removed the direct-child open class; now clears all descendant
.mobile-open/.mobile-sm-openin the sibling branch so deeply nested submenus are fully reset - Fix: Sticky spacer height drift when web fonts load late — when a Google Font was configured and the page was scrolled before the font finished loading, the spacer kept the wrong height permanently; the new
recalcMetricsForce()function briefly removes the fixed class synchronously (no visual flicker) to re-measure, called ondocument.fonts.readyand on resize
3.3.0
- New: Announcement Bar — add a full-width promotional banner above or below the navigation from MenuX Announcement in the admin sidebar; configure text, link, background color, text color, font size, vertical padding and position; optionally make it dismissible with a configurable expiry (localStorage); the bar renders exactly once per page even when multiple
[menux]shortcodes are present; settings are included in Import/Export
3.2.1
- New: Mobile accordion mode — a new toggle in the Mobile panel (“Close other submenus when one opens”) collapses sibling submenus at the same level whenever a new one is opened on mobile; works for all nesting levels and all mobile opening styles (dropdown, fullscreen, drawer)
3.2.0
- New: Dropdown Indicator customization — choose between Triangle (▾), Chevron (⌄), Dot (•) or None for the arrow shown on items with submenus; set a custom color, size (6–24 px) and toggle the open/close rotation animation. Applies to all levels: top-level items animate on hover or mega-panel open, nested items rotate when their sub-submenu opens. Settings are included in Import/Export.
3.1.3
- Fix: Sticky spacer height stale after Google Font load — when a Google Font was set, the font swap could change the nav height slightly after the initial measurement;
document.fonts.readynow triggers a re-measure so the spacer is always the correct height when sticky first engages - Fix: Duplicate HTML IDs with multiple shortcodes on same page — using
[menux]twice on the same page produced duplicateidattributes (menux-nav-main,menux-spacer,menux-list-main,menux-progress-bar); the shortcode now applies the same per-instance suffix strategy already used by the Gutenberg block
3.1.2
- Fix: Overlay and Escape key fire multiple times with multiple nav instances — the overlay click and
documentEscape listener were registered once per nav element on the page; both are now bound exactly once and dispatch to all nav instances, so pressing Escape or clicking the backdrop always closes the correct open menu - Fix: Search results XSS with HTML in page text or menu labels — page text containing
<,>or&characters was inserted into search result HTML without escaping, potentially breaking layout or allowing injected markup; all text piped throughbmSmHLis now HTML-escaped before the<mark>replacement - Fix: Search “No results” display with special characters — the user’s query string was inserted raw into the “No results for …” message; it is now escaped before rendering
- Fix: Admin language list XSS — language codes and labels returned by the multilingual-plugin AJAX endpoint were inserted into innerHTML without escaping;
menux_esc()is now applied to both values
3.1.1
- Fix: Scroll Progress Bar settings were never saved — enabling the progress bar and setting its color, height or position had no effect because the save handler dropped these four fields; they are now persisted and survive import/export
- Fix: Sticky “Shrink on scroll” and “Transition duration” were never saved — both sticky options were rendered in the form but silently discarded on save; now persisted and included in import/export
- Fix: Mega menu shortcode/widget columns — shortcodes that output forms, iframes or inputs (e.g. Contact Form 7, video embeds) were being stripped by output sanitisation; trusted admin shortcode output now renders intact while the surrounding markup stays sanitised
- Fix: Mega panel overflow escape (Elementor) — the page-builder overflow workaround is now ref-counted across sibling mega items and correctly released when a panel is closed by clicking outside or via keyboard, so wrappers are never left with permanently broken clipping
- Fix: Staggered entrance animation — menus with more than 20 top-level items no longer leave the items beyond the 20th permanently invisible
- Fix: Sticky spacer height — the sticky placeholder height is now re-measured on resize and font reflow, preventing a content jump when the bar engages
- Fix: Per-item mega Appearance editor — picking a background no longer wipes unsaved padding/gap/colour edits; every Appearance field now updates the live preview immediately, and the preview honours the per-item border radius and divider style
- Fix: In-page search — clicking a specific result now jumps to that match instead of snapping back to the first; repeated searches no longer fragment the page text
- Internal — aligned the mobile overlay opacity default (0.9) across all layers; removed a per-render document click-listener leak in the mega editor
3.1.0
- Elementor compatibility — mega menu panels now correctly escape Elementor columns that use
overflow:hidden; the JavaScript walks up the DOM on open and restores overflow values on close, so the panel is fully visible and receives mouse events correctly - Entrance animation z-index fix — themes with CSS entrance animations (Indigo Pulse: slideDown, Cosmic Dusk: fadeIn, Violet Cloud, Aurora Night, Ocean Electric, Cloud Glass) no longer trap the mega panel inside a stacking context; changed
animation-fill-modefrombothtobackwardsso no transform/opacity is retained after the animation ends, and added ananimationendlistener to remove the animation rule entirely - Nav bar right padding — WooCommerce cart icon and search icon no longer sit flush against the right edge of the menu bar; the container now applies the same horizontal padding on the right side as the link items use internally (minimum 8 px)
- Mega menu border-radius — per-item border-radius now applies only to the two bottom corners of the panel, eliminating the visual gap between the nav bar and the panel top edge
3.0.0
- Per-item mega menu appearance — each mega menu now has its own independent 🎨 Appearance tab inside the editor modal with full control over: background (solid color, 12 gradient presets or a custom gradient builder with direction selector and two color pickers), padding top/bottom, padding left/right, column gap, border radius, font size, link color, heading color, accent/icon color, link hover color, description color, divider color and divider style (solid/dashed/dotted); settings are saved per item and generate scoped CSS so each mega menu panel renders with a completely independent look; a “↺ Reset to global defaults” button clears all overrides for that item
- Redesigned Mega Menu admin panel — the item list now shows clear ON/OFF status badges (green ⚡ ON / grey OFF) for each first-level nav item; items in OFF state show a dashed “+ Enable Mega Menu” call-to-action button; items in ON state show the “⚡ Edit Columns ▶” primary button, a Full Width checkbox and a “✕ Disable” link; the editor modal adds 📋 Content and 🎨 Appearance tab buttons in the toolbar for switching between the column editor and the per-item style panel
- Sidebar reorganisation — ⚡ Mega Menu moved into the Structure group (alongside Menu Structure) since it configures what is in the menu, not how it looks; 🖼️ Logo moved into the Style group (below Colors) since it is a visual/brand setting; ✨ Themes added as a first-class sidebar entry at the top of the Style group for immediate discoverability
- Themes panel accessible directly from sidebar — clicking ✨ Themes in the sidebar now opens the theme grid immediately without requiring a form save first;
buildInlineThemeGrid()is called both on DOMContentLoaded and on every navigation to the Themes section - Descriptive empty-menu state — the builder sidebar empty state now shows a helpful message with a clickable link (“ Go to Menu Structure”) rather than just “Empty menu”
- Live preview empty state — the live preview also shows an informative message referencing Menu Structure when no items have been added
2.12.0
- New: Duplicate Column button in the mega menu editor — clone any column (including all its items) and insert it right after the original; disabled automatically when the 4-column maximum is reached.
- New: Column text alignment controls (L / C / R) in the mega menu editor — set per-column alignment for links and headings; stored as a column-level property and rendered via data-align CSS selectors.
- New: Mega menu divider color and style settings — choose a custom color for column dividers and headings border, and select between solid, dashed or dotted line styles.
- New: Mega menu open/close animation speed control — configure the panel transition duration (0–800 ms) from the Panel Appearance settings.
2.11.0
- New: Dedicated Mega Menu text styling, independent from the main Colors section — separate controls for heading, link, link hover and description colors, plus the existing panel background.
- New: Per-item heading and link color overrides in the mega menu editor (alongside the existing description color).
- Improved: All 12 mega menu preset templates now ship with professional, high-contrast color palettes tuned to each template’s panel background, so they look polished out of the box regardless of the theme or main menu colors.
- Fix: Mega menu text no longer borrows colors from the main navigation; applying a preset now also applies its colors end-to-end.
2.10.0
- WooCommerce integration — adds a cart icon to the menu with a live item-count badge, an optional cart subtotal, and a mini-cart dropdown showing the current cart contents; the count, total and mini-cart refresh instantly when products are added, with no page reload, via WooCommerce’s native add-to-cart fragments
- Cart icon options — choose between cart, bag or basket icons; place the cart on the left or right of the menu; customise the icon and count-badge colors; optionally hide the cart while it’s empty
- Mini-cart behavior — open the dropdown on hover (with automatic tap-to-open on touch devices), on click, or disable it so the icon links straight to the cart page; closes on outside-click and Escape
- Multi-instance & block safe — every cart icon on the page (header, footer, multiple Gutenberg blocks) updates together; works in classic themes via the shortcode and in FSE themes via the giuliomax/menu block
- Graceful fallback — when WooCommerce is not installed the feature stays completely silent; the settings panel remains available and shows a notice
- Import/Export parity — the new cart settings are included in configuration export and restored on import
2.9.0
- Native Gutenberg block (giuliomax/menu) — adds a dynamic block registered via
register_block_type()+block.json; therender_callbackdelegates entirely to the existingmenux_render_shortcode()function so no HTML is duplicated; the shortcode, WP Menu Integration and all other existing features are completely unchanged - FSE / Site Editor support — the block works in Full Site Editing themes (e.g. Twenty Twenty-Five): drag it into any header template part from the Site Editor; the
enqueue_block_editor_assetshook ensures Font Awesome 6, the configured Google Font, and the dynamic theme CSS are loaded inside the editor’s iframe; the mega-menu and hamburger JS initialise correctly in the template-preview iframe - InspectorControls sidebar — a
SelectControlin the block sidebar lets you pick the menu location (Primary, Footer, Sidebar, Mobile); live preview updates viaServerSideRenderusing the REST block-renderer endpoint - Multi-instance ID safety — when two or more
giuliomax/menublocks appear on the same page, structural element IDs are automatically suffixed with a unique instance counter - No new build toolchain — the editor script is plain vanilla JS registered directly via
wp_register_script(); no@wordpress/scripts, Webpack or npm required
2.8.0
- Sticky mirror — new “Match main menu” toggle (on by default) makes the sticky bar inherit all styles from the main menu automatically; custom options shown when mirror is disabled
- Container border-radius — new field in Layout Spacing to round the corners of the menu container
- Page Load Animation — renamed from “Entrance Animation” with improved UX; duration/delay/stagger controls hidden when “None” is selected
- Logo in live preview — the admin live preview now shows the configured logo at the correct position; updates immediately without a save
- Mega Menu preset modal — the template grid was clipped after the first row; the grid wrapper now scrolls independently so all 12 templates are reachable
2.7.0
- Help & Documentation modal — a full-screen contextual help overlay accessible from every section via the ❓ Help button; 12 sections covering every panel and field, navigable via a sidebar
- Section persistence after save — saving settings returns the admin to the same panel section the user was in rather than jumping to the top
2.6.5
- Rock-solid search modal — the open/close click handler now runs unconditionally at page load, independent of any JS configuration flag
- Full deferred-script support — the plugin JS now detects whether the DOM is already parsed when the script executes; if an optimisation plugin adds
defer, the init runs immediately
2.6.2
- Visual gradient picker for container background — a fully mouse-driven widget: live preview strip, Linear / Radial type toggle, 8-direction compass rose, 0–360° fine-tune slider, two native colour pickers
2.6.0
- Accordion menu builder — collapsible per-item editor with clearly labelled sections; streamlined Add pane; polished drag-and-drop rows
2.5.0
- Google Font picker — searchable dropdown with 70+ fonts, lazy typeface preview, live update
- Onboarding tutorial — floating 🐝 bee mascot auto-starts on first visit and guides through 4 steps
- Search bar — moved to free tier; Menu tab + In-page search tab with full keyboard navigation
2.4.1
- Accessibility master toggle — all WCAG features disabled by default, activated with a single switch
- Close button color config — color pickers for the × close button in Fullscreen/Drawer modes
2.4.0
- Added complete Accessibility settings panel (WCAG 2.2 AA): keyboard navigation, focus ring, skip link, ARIA, touch targets, reduced motion, high-contrast, focus trap in mobile overlay
2.3.5
- Added 12 demo templates for the Mega Menu editor — load a full column layout in one click
2.3.2
- Mega Menu: gradient background picker with 12 presets and custom gradient builder; font size, link color, heading color and accent/icon color controls; icon picker for all item types; drag & drop reordering
2.3.0
- Introduced Mega Menu — full-width column panels for first-level nav items (free); up to 4 columns, 5 item types, mobile support
2.2.0
- Added 20 preset themes, link border-radius, submenu styling, WP Menu Integration, full Reset button
2.1.1
- Initial release — builder, 4 mobile modes, sticky, scroll progress bar, entrance animations, import/export, multilingual
