Хуки меню почти на все случаи.
wp_nav_menu([
'theme_location' => 'top_left',
'container'=> false,
'items_wrap' => '<ul class="nav navbar-nav %2$s">%3$s</ul>',
'menu_class' => '',
'ul_class' => 'navbar-nav',
'ul_child_class' => 'dropdown-menu',
'li_class' => 'nav-item',
'li_child_class' => 'nav-item',
'a_class' => 'nav-link',
'a_child_class' => 'nav-link',
]);
## Добавление стилей для стандартного меню
add_filter('nav_menu_css_class', 'add_menu_list_item_class', 1, 3);
function add_menu_list_item_class($classes, $item, $args) {
if (property_exists($args, 'li_class') && !$item->menu_item_parent) {
$classes[] = $args->li_class;
}
if (property_exists($args, 'li_child_class') && $item->menu_item_parent) {
$classes[] = $args->li_child_class;
}
return $classes;
}
add_filter( 'nav_menu_link_attributes', 'add_menu_link_class', 1, 3 );
function add_menu_link_class( $atts, $item, $args ) {
if ( strpos( $atts['href'], home_url() ) === false ) {
$atts['target'] = '_blank';
}
if (property_exists($args, 'a_class') && !$item->menu_item_parent) {
$atts['class'] = $args->a_class;
}
if (property_exists($args, 'a_child_class') && $item->menu_item_parent) {
$atts['class'] = $args->a_child_class;
}
return $atts;
}
add_filter( 'nav_menu_submenu_css_class', 'my_nav_menu_submenu_css_class', 1, 3);
function my_nav_menu_submenu_css_class($classes, $args, $depth) {
if (property_exists($args, 'ul_child_class')) {
$classes[] = $args->ul_child_class;
}
return $classes;
}