Skip to main content Skip to footer
SevenSpark logo
  • Shop
  • Articles
  • About
  • Help
  • Shop
  • Articles
  • About
  • Help
Login

Menu Item Classes have been stripped

Troubleshooter
Diagnosis
Menu items completely unstyled · Styles don't look like the demo · Styles present but not like demo

Sometimes, a theme or plugin will use a filter to strip out the standard WordPress menu item classes like menu-item. When these are removed, UberMenu’s styles, which rely on these classes, cannot be applied. Themes and plugins should never remove core functionality.

Details

Sometimes, a theme or plugin will use a filter to strip out the standard WordPress menu item classes like menu-item (note that these classes are all prefixed with ubermenu in UberMenu 3). When these are removed, UberMenu’s styles, which rely on these classes, cannot be applied. Themes and plugins should never remove core functionality.

Here is more information on Theme Interference

Identifying the problem

The easiest way to spot this is to look at the UberMenu source and see if the standard classes like ubermenu-item are present on the lis. If they are missing, they have been stripped.

Most of the time, this issue occurs when a theme or plugin adds a filter to the nav_menu_css_class hook. Here’s an example:

function remove_menu_styles($classes, $item) {
     
    //some code

    return $classes; 
}
add_filter('nav_menu_css_class', 'remove_menu_styles', 10, 2);

This can also occur if a theme manipulates the output of the wp_nav_menu function, via the `wp_nav_menu` filter or directly in the theme templates, replacing string with str_replace or preg_replace. This is very bad practice.

Note that if the class names appear in the page source, but not in the DevTools, it indicates that they have been removed via javascript (this is very uncommon).

The Solution

UberMenu 3 Setting

In UberMenu 3, there is a setting in the Control Panel > General Settings > Miscellaneous > Disable Menu Item Class Filtering.

If the classes are being filtered via the nav_menu_css_class filter, this should resolve it.

Manually in UberMenu 2

Once you’ve located the filter, copy the line that starts with add_filter( into your child theme’s functions.php. Then change add_filter to remove_filter

remove_filter('nav_menu_css_class', 'remove_menu_styles', 10, 2);

Ensure that this line of code runs AFTER the line from the theme/plugin. You may need to attach it to a different WordPress action.

preg_replace or str_replace

If the theme is running string replacement on the menu output, it is best that you just replace the theme’s menu system with Manual Integration (or Easy Integration in UberMenu 2).

Javascript

If your theme is removing the classes via javascript, this would need to be resolved either by removing that javascript, or altering the menu markup to prevent that JS from applying to UberMenu.

SevenSpark Logo
Follow on FacebookFollow on XFollow on YouTube

Plugins

  • UberMenu Mega Menu
  • ShiftNav Mobile Menu
  • Bellows Accordion Menu
  • Carbon Copy Menu Duplicator

Resources

  • Articles
  • Tutorials
  • Support Center
  • About SevenSpark

Newsletter

Get exclusive deals by signing up to our Newsletter.

Copyright 2025 © SevenSpark LLC

  • Privacy Settings
  • Privacy Policy
  • Terms of Service
  • Disclaimer