<?
wp_nav_menu( array(
'theme_location' => 'menu-2',
'menu' => '',
'container' => 'div',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '<div class="vertical-menu__list_item">', //То что должно быть только у родительского
'after' => '</div>', //То что должно быть только у родительского
'link_before' => '',
'link_after' => '',
'items_wrap' => '
<div class="vertical-menu">
<div class="vertical-menu__title">
<div class="line line-r line-gold"></div>
</div>
<div class="vertical-menu__list"><ul>%3$s</ul></div></div>',
'depth' => 10,
'walker' => new magomra_walker_nav_menu,
) );
?>
class magomra_walker_nav_menu extends Walker_Nav_Menu {
// add classes to ul sub-menus
function start_lvl( &$output, $depth ) {
// depth dependent classes
$indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // code indent
$display_depth = ( $depth + 1); // because it counts the first submenu as 0
$classes = array(
'vertical-menu__sub-list',
( $display_depth % 2 ? '' : 'menu-even' ),
( $display_depth >=2 ? 'sub-sub-menu' : '' ),
'menu-depth-' . $display_depth
);
$class_names = implode( ' ', $classes );
// build html
$output .= "\n" . $indent . '<ul class="' . $class_names . '">' . "\n";
}
// add main/sub classes to li's and links
function start_el( &$output, $item, $depth, $args ) {
global $wp_query;
$indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // code indent
// depth dependent classes
$depth_classes = array(
( $depth == 0 ? 'main-menu-item' : 'sub-menu-item' ),
( $depth >=2 ? 'sub-sub-menu-item' : '' ),
( $depth % 2 ? 'menu-item-odd' : 'menu-item-even' ),
'menu-item-depth-' . $depth
);
$depth_class_names = esc_attr( implode( ' ', $depth_classes ) );
// passed classes
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = esc_attr( implode( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ) );
// build html
$output .= $indent . '<li id="nav-menu-item-'. $item->ID . '" class="' . $depth_class_names . ' ' . $class_names . '">';
// link attributes
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
$attributes .= ' class="menu-link ' . ( $depth > 0 ? 'vertical-menu__sub-list_item ' : '' ) . '"';
$item_output = sprintf( '%1$s<a%2$s>%3$s%4$s%5$s</a>%6$s',
$args->before,
$attributes,
$args->link_before,
apply_filters( 'the_title', $item->title, $item->ID ),
$args->link_after,
$args->after
);
// build html
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
<div class="vertical-menu__list">
<ul>
<li id="nav-menu-item-125" class="main-menu-item menu-item-even menu-item-depth-0 menu-item menu-item-type-post_type menu-item-object-page">
<div class="vertical-menu__list_item">
<a href="#" class="menu-link ">Профессиональный дизайн</a>
</div>
</li>
<li id="nav-menu-item-150" class="main-menu-item menu-item-even menu-item-depth-0 menu-item menu-item-type-post_type menu-item-object-page">
<div class="vertical-menu__list_item">
<a href="#" class="menu-link ">Полиграфические услуги</a>
</div>
</li>
<li id="nav-menu-item-154" class="main-menu-item menu-item-even menu-item-depth-0 menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children">
<div class="vertical-menu__list_item">
<a href="#" class="menu-link ">Корпоративные сувениры и подарки</a>
</div>
<ul class="vertical-menu__sub-list menu-depth-1">
<li id="nav-menu-item-157" class="sub-menu-item menu-item-odd menu-item-depth-1 menu-item menu-item-type-post_type menu-item-object-page">
<div class="vertical-menu__list_item">
<a href="#" class="menu-link vertical-menu__sub-list_item ">Наружная реклама</a>
</div>
</li>
<li id="nav-menu-item-160" class="sub-menu-item menu-item-odd menu-item-depth-1 menu-item menu-item-type-post_type menu-item-object-page">
<div class="vertical-menu__list_item">
<a href="#" class="menu-link vertical-menu__sub-list_item ">Оригинальные изделия из дерева</a>
</div>
</li>
</ul>
</li>
<li id="nav-menu-item-163" class="main-menu-item menu-item-even menu-item-depth-0 menu-item menu-item-type-post_type menu-item-object-page">
<div class="vertical-menu__list_item">
<a href="#" class="menu-link ">Печать на одежду</a>
</div>
</li>
</ul>
</div>
$item_output = sprintf( '%1$s<a%2$s>%3$s%4$s%5$s</a>%6$s',
$args->before,
$attributes,
$args->link_before,
apply_filters( 'the_title', $item->title, $item->ID ),
$args->link_after,
$args->after
);
// Все меню кроме верхнего уровня убираем замены перед <a ... > и после </a>
if($depth >= '1') {
$sprf = '<a%2$s>%3$s%4$s%5$s</a>';
} else {
$sprf = '%1$s<a%2$s>%3$s%4$s%5$s</a>%6$s';
}
$item_output = sprintf( $sprf,
$args->before,
$attributes,
$args->link_before,
apply_filters( 'the_title', $item->title, $item->ID ),
$args->link_after,
$args->after
);