常阳时光

移除 WordPress 菜单生成函数 wp_nav_menu 所有/部分 class/id

如题,移除 WordPress 菜单生成函数 wp_nav_menu 所有/部分 class/id,折腾主题可能用得上。

移除所有 class/id

add_filter( 'nav_menu_css_class', 'my_css_attributes_filter', 100, 1 );
add_filter( 'nav_menu_item_id', 'my_css_attributes_filter', 100, 1 );
add_filter( 'page_css_class', 'my_css_attributes_filter', 100, 1 );
function my_css_attributes_filter( $var ) {
return is_array( $var ) ? array() : '';
}

移除指定 class/id 外其他所有 class/id

只剩下 current-menu-item:

add_filter( 'nav_menu_css_class', 'my_css_attributes_filter', 100, 1 );
add_filter( 'nav_menu_item_id', 'my_css_attributes_filter', 100, 1 );
add_filter( 'page_css_class', 'my_css_attributes_filter', 100, 1 );
function my_css_attributes_filter($var) {
return is_array( $var ) ? array_intersect( $var, array( 'current-menu-item' ) ) : '';
}

移除指定 class/id

只移除 current-menu-item:

add_filter( 'nav_menu_css_class', 'special_nav_class', 100, 2 );
function special_nav_class($classes, $item){
if(($key = array_search('current-menu-item', $classes)) !== false) {
unset($classes[$key]);
}
return $classes;
}

移除空 class

add_filter ( 'wp_nav_menu','strip_empty_classes' );
function strip_empty_classes( $menu ) {
$menu = preg_replace( '/ class=(["\'])(?!active).*?\1/', '', $menu );
return $menu;
}

via:wp_nav_menu_remove_class_id

remove specific classes from menu items