Title: Demfilz Advanced Menus
Author: demfilz
Published: <strong>October 9, 2026</strong>
Last modified: October 9, 2026

---

Search plugins

![](https://ps.w.org/demfilz-advanced-menus/assets/banner-772x250.png?rev=3737389)

![](https://ps.w.org/demfilz-advanced-menus/assets/icon-256x256.png?rev=3737389)

# Demfilz Advanced Menus

 By [demfilz](https://profiles.wordpress.org/demfilz/)

[Download](https://downloads.wordpress.org/plugin/demfilz-advanced-menus.1.0.2.zip)

 * [Details](https://wordpress.org/plugins/demfilz-advanced-menus/#description)
 * [Reviews](https://wordpress.org/plugins/demfilz-advanced-menus/#reviews)
 *  [Installation](https://wordpress.org/plugins/demfilz-advanced-menus/#installation)
 * [Development](https://wordpress.org/plugins/demfilz-advanced-menus/#developers)

 [Support](https://wordpress.org/support/plugin/demfilz-advanced-menus/)

## Description

Your theme’s menu, upgraded. Advanced Menus adds the things people always end up
wanting from their navigation, and it does it inside Appearance > Menus, on the 
items you already have. No page builder, no theme lock-in, no new admin screens 
to learn.

**On every menu item**

 * An icon from a built in library of more than 90 inline SVG icons, or any image
   from your media library. Before, after or above the label, or icon only with 
   the label kept for screen readers.
 * A badge: “New”, “Sale”, “-20%”, in five colour presets or your own colours.
 * The description shown as a subtitle under the label.
 * A highlight style: solid or outline button, for the one item that deserves attention.
 * Visibility rules: everyone, logged in users (optionally only some roles), logged
   out visitors, desktop only, mobile only, and a date window. Hidden items take
   their children with them.

**Mega menus**

Tick “Mega menu” on a top level item and its child items become columns. Each column
is a heading with the third level as its links, or one of these instead:

 * Products: the most recent, featured, on sale, best selling, or from one category,
   with thumbnail and price (WooCommerce).
 * Product categories, with thumbnail and product count, top level or under a chosen
   parent (WooCommerce).
 * Recent posts, optionally from one category.
 * An image, linked to the item’s URL.
 * A synced pattern, built once under Appearance > Patterns.
 * Custom content: HTML and shortcodes.

Panels can be full width, the width of the menu, or fit their content. Columns can
span two, three or four tracks. Below the mobile breakpoint the panel becomes a 
plain nested list, so nothing is lost on a phone.

**Item types**

Turn a custom link into a search form (inline, or an icon that expands, with live
results as you type), a cart link with a live count and a dropdown mini cart, an
account link that becomes a menu of account pages once signed in, a block of custom
content, or a divider. A “no link” option turns any item into a heading.

**Mobile drawer**

A slide in drawer built from any menu, from the left or the right, with accordion
submenus, an optional search box, and account and cart links. Open it from a floating
button, from your theme’s own menu button (enter its selector and the theme menu
is replaced), from the [demfilz_menu_button] shortcode, from the block, or from 
any element carrying the attribute data-dadm-open. Focus is trapped inside while
it is open, Escape closes it, and focus returns to the button.

**Sticky header**

Give it a CSS selector and the header stays on screen while scrolling. A placeholder
stops the page jumping, the admin bar is accounted for, a shrink class is added 
after a short scroll, and it can be desktop only.

**Colours and shape, live**

Panel colours, accent colour, corner radius, shadow, font size and a light, dark
or automatic colour scheme are in the Customizer with an instant preview.

**Place menus anywhere**

The “Advanced Menu” block, the [demfilz_menu] shortcode and the “Advanced Menu” 
widget render a horizontal bar, a vertical list, or a drawer button.

**Built properly**

 * Works with the theme you have: the plugin enhances the menus your theme prints
   through standard WordPress filters. Themes that print two levels get a third 
   level for mega menus.
 * Keyboard and screen reader support: aria-expanded, arrow keys, Escape, focus 
   trap, visible focus rings, reduced motion respected.
 * One small stylesheet and one script, loaded only when a feature is on. No jQuery.
   Nothing loaded from anywhere else: icons are inline SVG.
 * Product columns are cached and refreshed when a product is saved.
 * Settings export and import as JSON.
 * Hooks for developers: `dadm_item_visible`, `dadm_icons`, `dadm_search_results`,`
   dadm_column_html`, `dadm_product_query_args`, `dadm_before_drawer_menu`, `dadm_after_drawer_menu`.
 * No external services. Nothing leaves your site.

## Screenshots

[⌊The Advanced Menus panel on a menu item: icon picker, badge, description and highlight,
with tabs for visibility, mega menu and item type.⌉⌊The Advanced Menus panel on 
a menu item: icon picker, badge, description and highlight, with tabs for visibility,
mega menu and item type.⌉[

The Advanced Menus panel on a menu item: icon picker, badge, description and highlight,
with tabs for visibility, mega menu and item type.

[⌊A full width mega menu on a standard theme: a links column, a featured products
column with prices and an image column.⌉⌊A full width mega menu on a standard theme:
a links column, a featured products column with prices and an image column.⌉[

A full width mega menu on a standard theme: a links column, a featured products 
column with prices and an image column.

[⌊The mobile drawer on a phone: the same menu as an accordion, product cards included.⌉⌊
The mobile drawer on a phone: the same menu as an accordion, product cards included
.⌉[

The mobile drawer on a phone: the same menu as an accordion, product cards included.

[⌊Visibility rules on an item: login state, roles, device and a date window.⌉⌊Visibility
rules on an item: login state, roles, device and a date window.⌉[

Visibility rules on an item: login state, roles, device and a date window.

[⌊The settings screen: theme menus, behaviour, off-canvas drawer, sticky header,
search and tools.⌉⌊The settings screen: theme menus, behaviour, off-canvas drawer,
sticky header, search and tools.⌉[

The settings screen: theme menus, behaviour, off-canvas drawer, sticky header, search
and tools.

[⌊The Customizer section with a live preview of the colours and shape.⌉⌊The Customizer
section with a live preview of the colours and shape.⌉[

The Customizer section with a live preview of the colours and shape.

[⌊Live search from the menu bar: pages, posts and products with thumbnails and prices
as you type.⌉⌊Live search from the menu bar: pages, posts and products with thumbnails
and prices as you type.⌉[

Live search from the menu bar: pages, posts and products with thumbnails and prices
as you type.

## Blocks

This plugin provides 1 block.

 *   Advanced Menu

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`, or install it from Plugins 
    > Add New.
 2. Activate it.
 3. Open Appearance > Menus. Every item now has an “Advanced Menus” panel: click “Options”
    to set an icon, a badge, visibility rules or mega menu settings. Save the menu.
 4. Open Appearance > Advanced Menus for the drawer, the sticky header, search and 
    behaviour settings.
 5. Open Appearance > Customize > Advanced Menus to change the colours with a live 
    preview.

## FAQ

### Does it work with my theme?

It works with any theme that prints its menus with the standard `wp_nav_menu()` 
function, which is nearly all of them. The plugin adds to the menu through WordPress
filters; it does not replace the theme’s markup. If a theme uses a custom menu walker
that skips those filters, use the block, shortcode or widget to render the menu 
instead, or the drawer for mobile.

### I use a block theme and there is no Appearance > Menus.

The plugin switches that screen on for block themes. Build the menu there, then 
place it with the “Advanced Menu” block in your header template part, or enable 
the drawer, which works with every theme.

### My theme already has a menu button on phones. Do I need two?

No. Under Appearance > Advanced Menus > Off-canvas enter the selector of the theme’s
button (for example `.menu-toggle`) in “Reuse the theme’s menu button” and switch
the floating button off. Taps on the theme’s button then open the drawer.

### How do I build a mega menu?

Create the structure in Appearance > Menus: a top level item, child items for the
columns, and grandchild items for the links in each column. On the top level item
open “Options”, the “Mega menu” tab, tick “Mega menu” and save. On a child item 
choose a column type to show products, posts, an image or custom content instead
of links.

### Why does my mega menu only show two levels?

Some themes print their menu two levels deep. The plugin lifts that to three levels
for menus that contain a mega item (Appearance > Advanced Menus > Integration > 
Mega menu depth). If the third level still does not show, the theme uses a custom
walker; use the block or shortcode for that menu.

### Can I show an item only to logged in users?

Yes. Open the item’s “Visibility” tab and choose “Logged in users”. Tick roles to
limit it further. “Logged out visitors” does the opposite, and the date fields show
an item only between two dates. Login and date rules are applied on the server for
every menu printed with the standard wp_nav_menu() function, but they only decide
what the menu shows: the linked pages stay reachable by URL, so protect private 
pages with a membership plugin as well.

### Where do the icons come from?

They are drawn by the plugin as inline SVG and shipped with it. Nothing is loaded
from a font service or a CDN. You can also pick any image from the media library,
and developers can add icons with the `dadm_icons` filter.

### How do I add the mobile drawer to my header?

Enable the drawer under Appearance > Advanced Menus > Off-canvas and choose a menu.
The floating button appears on its own. To put a button in your own header, add 
the attribute `data-dadm-open` to any element, use the `[demfilz_menu_button]` shortcode,
or add the “Advanced Menu” block set to “Drawer button”.

### How do I make my header sticky?

Under Appearance > Advanced Menus > Sticky header, enable it and enter the CSS selector
of your header, for example `#masthead` or `header.site-header`. Right click the
header in your browser and choose Inspect to find its id or class.

### Does it need WooCommerce?

No. Without WooCommerce, cart items are hidden, product columns show a short note,
and the account item links to the WordPress login and profile pages. With WooCommerce
you get the cart count, the mini cart, product columns and account endpoints.

### Does the live search expose anything private?

No. The search endpoint returns only published, public, non password protected content,
the same content a visitor could find with the normal site search. Results are capped
at the number set in the settings.

### Does the plugin send data anywhere?

No. There are no external services, no tracking and no outbound calls.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Demfilz Advanced Menus” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ demfilz ](https://profiles.wordpress.org/demfilz/)

[Translate “Demfilz Advanced Menus” into your language.](https://translate.wordpress.org/projects/wp-plugins/demfilz-advanced-menus)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/demfilz-advanced-menus/),
check out the [SVN repository](https://plugins.svn.wordpress.org/demfilz-advanced-menus/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/demfilz-advanced-menus/)
by [RSS](https://plugins.trac.wordpress.org/log/demfilz-advanced-menus/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.2

 * The output buffers that capture the drawer hooks and the WooCommerce mini cart
   are closed in a finally block, so a hooked callback can never leave the buffer
   stack open.
 * The live search endpoint documents in code why it is public (read only, published
   public content only).

#### 1.0.1

 * Parents in depth limited menus (a footer printed one level deep) no longer get
   arrows, ARIA state or a swallowed first tap for a submenu that is never printed.
 * The “Recent posts” column honours its category.
 * The cart count and the mini cart refresh after an AJAX add to cart on sites without
   the classic cart widget.
 * The breakpoint script and the colour scheme classes print on every page, so block,
   shortcode and widget menus paint correctly with “Theme menus: None”.
 * Wide and full alignment work on the Advanced Menu block.
 * Cart and account dropdowns open on a tap below the breakpoint and announce their
   state; the live search field is a combobox.
 * A finger on a touch screen laptop taps to open; keyboard focus stays visible 
   in forced colours mode; long labels no longer run under the toggle buttons; third
   level lists inside a mega panel are no longer announced as collapsed.
 * Drawer: no layout shift from the scrollbar, readable links on a light drawer 
   colour, safe area insets for the floating button, print styles.
 * Hardening: colours re-validated at output, a role that no longer exists stays
   on an item’s visibility rule, out of stock products follow the shop setting in
   live search, cleaner uninstall.

#### 1.0.0

 * Initial release: icons, badges, descriptions, highlights, visibility rules, mega
   menus with product, product category, post, image, pattern and content columns,
   search, cart, account, content and divider item types, off-canvas drawer (floating
   button or the theme’s own button), sticky header, Customizer styling with live
   preview, block, shortcode and widget, settings import and export.

## Meta

 *  Version **1.0.2**
 *  Last updated **4 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [mega menu](https://wordpress.org/plugins/tags/mega-menu/)[menu icons](https://wordpress.org/plugins/tags/menu-icons/)
   [mobile menu](https://wordpress.org/plugins/tags/mobile-menu/)[navigation](https://wordpress.org/plugins/tags/navigation/)
   [sticky header](https://wordpress.org/plugins/tags/sticky-header/)
 *  [Advanced View](https://wordpress.org/plugins/demfilz-advanced-menus/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/demfilz-advanced-menus/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/demfilz-advanced-menus/reviews/)

## Contributors

 *   [ demfilz ](https://profiles.wordpress.org/demfilz/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/demfilz-advanced-menus/)