| 开发者 | giuliomax |
|---|---|
| 更新时间 | 2026年6月8日 19:12 |
| 捐献地址: | 去捐款 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
[menux] shortcode in pages, widgets and builders. Everything is configured visually from the WordPress admin: pick one of 50 preset themes or dial in every detail manually. Works perfectly on desktop, tablet and mobile — completely free.
✨ Why switch to a proper menu builder?
Most navigation plugins lock advanced features behind a paywall or make you fight their builder. This plugin gives you mega menus, a live WooCommerce cart, per-item appearance styles, WCAG 2.2 AA accessibility, Google Fonts, 50 preset themes, a countdown Announcement Bar and an FSE Gutenberg block — all in the free version, with zero upsells nagging you while you build.
✨ Main Features
[menux location="..."]SelectControl sidebar to pick the menu location; rendered server-side so no HTML is duplicatedwp_nav_menu() calls and replace them with MenuX outputlocalStorage; the bar stays hidden for a configurable number of days; the key is keyed to the message text, so changing the copy automatically resets dismissal for all visitors[menux] shortcodes are on the same page the bar renders exactly once, matching the behavior of the overlay backdrop[menux] in any page, post, widget or template/wp-content/plugins/[menux] and paste it into any page, post, widget or template area; use [menux location="footer"] to show a location-specific menu.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"].
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.
Use role-based visibility or per-item device/page conditionals to adapt the menu per context. A single menu configuration covers the most common multi-location scenarios via the location attribute.
In the visual builder, drag any item slightly to the right under another item to nest it — it becomes a submenu entry. You can nest several levels deep. On desktop the submenu opens on hover; on mobile it expands inline when tapped. No code needed.
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.
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.
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.
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.
Yes. The menu HTML is generated server-side and compatible with WP Rocket, LiteSpeed Cache, W3 Total Cache and similar plugins.
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.
Yes. This plugin automatically detects installed multilingual plugins and lets you set a label per language for each menu item.
Go to MenuX → Style → Mobile and set your preferred pixel breakpoint, or choose Auto to detect based on available space. Default is 768px.
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 12 ready-made templates.
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.
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) bypass wp_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.
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.
Yes. Go to MenuX → Tools → Reset Everything and confirm. This permanently deletes all menu items, styles and integration settings.
You can target the .menux-container wrapper and its child elements from your theme's stylesheet or from any "Additional CSS" field in the WordPress Customizer.
help-content.php caused a parse error that crashed the entire WordPress admin; fixed by escaping the offending character (bar\'s)bmCloseMenu() now collapses all nested .mobile-sm-open links and resets mega-menu .menux-open state including aria-expanded.mobile-open / .mobile-sm-open in the sibling branch so deeply nested submenus are fully resetrecalcMetricsForce() function briefly removes the fixed class synchronously (no visual flicker) to re-measure, called on document.fonts.ready and on resize[menux] shortcodes are present; settings are included in Import/Exportdocument.fonts.ready now triggers a re-measure so the spacer is always the correct height when sticky first engages[menux] twice on the same page produced duplicate id attributes (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 blockdocument Escape 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<, > or & characters was inserted into search result HTML without escaping, potentially breaking layout or allowing injected markup; all text piped through bmSmHL is now HTML-escaped before the <mark> replacementmenux_esc() is now applied to both valuesoverflow: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 correctlyanimation-fill-mode from both to backwards so no transform/opacity is retained after the animation ends, and added an animationend listener to remove the animation rule entirelybuildInlineThemeGrid() is called both on DOMContentLoaded and on every navigation to the Themes sectionregister_block_type() + block.json; the render_callback delegates entirely to the existing menux_render_shortcode() function so no HTML is duplicated; the shortcode, WP Menu Integration and all other existing features are completely unchangedenqueue_block_editor_assets hook 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 iframeSelectControl in the block sidebar lets you pick the menu location (Primary, Footer, Sidebar, Mobile); live preview updates via ServerSideRender using the REST block-renderer endpointgiuliomax/menu blocks appear on the same page, structural element IDs are automatically suffixed with a unique instance counterwp_register_script(); no @wordpress/scripts, Webpack or npm requireddefer, the init runs immediately