Skip to content

Instantly share code, notes, and snippets.

@minhphuc429
Forked from jmsmrgn/clean-wp_nav_menu.php
Created November 10, 2016 03:31
Show Gist options
  • Save minhphuc429/880a94c9f98f5a05bbe88d540302b166 to your computer and use it in GitHub Desktop.
Save minhphuc429/880a94c9f98f5a05bbe88d540302b166 to your computer and use it in GitHub Desktop.
WordPress - Clean wp_nav_menu
//Deletes all CSS classes and id's, except for those listed in the array below
function custom_wp_nav_menu($var) {
return is_array($var) ? array_intersect($var, array(
//List of allowed menu classes
'first',
'last',
'current_page_item',
'current_page_parent',
'current_page_ancestor',
'current-menu-ancestor',
'active'
)
) : '';
}
add_filter('nav_menu_css_class', 'custom_wp_nav_menu');
add_filter('nav_menu_item_id', 'custom_wp_nav_menu');
add_filter('page_css_class', 'custom_wp_nav_menu');
//Replaces "current-menu-item" (and similar classes) with "active"
function current_to_active($text){
$replace = array(
//List of menu item classes that should be changed to "active"
'current_page_item' => 'active',
'current_page_parent' => 'active',
'current_page_ancestor' => 'active',
'current-menu-ancestor' => 'active'
);
$text = str_replace(array_keys($replace), $replace, $text);
return $text;
}
add_filter ('wp_nav_menu','current_to_active');
//Deletes empty classes and removes the sub menu class
function strip_empty_classes($menu) {
$menu = preg_replace('/ class=""| class="sub-menu"/','',$menu);
return $menu;
}
add_filter ('wp_nav_menu','strip_empty_classes');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment