Так я переопределяю классы ul, li (нотация BEM) в основной навигации в Wordpress. Это поддержка вложенных элементов меню. Шаги: 1. Создайте меню 2. убедитесь, что вы отключили эхо в wp_nav_menu с помощью «'echo' => false» 3. поместите эхо перед первым preg_replace Мое меню не имеет дополнительной оболочки
function storefront_primary_navigation() {
?>
<nav class="menu" role="navigation" aria-label="<?php esc_html_e( 'Primary Navigation', 'storefront' ); ?>">
<button class="menu__btn" aria-controls="menu" aria-expanded="false"><span><?php echo esc_attr( apply_filters( 'storefront_menu_toggle_text', __( 'Menu', 'storefront' ) ) ); ?></span></button>
<?php
echo preg_replace('#class="(.+\s)?sub-menu(\s|")#', 'class="menu__list--subMenu"',
preg_replace('#<li[^>]+>#','<li class="menu__item">',
preg_replace('#<a#','<a class="menu__link"',
wp_nav_menu(
array(
'items_wrap' => '<ul class="menu__list">%3$s</ul>',
'theme_location' => 'primary',
'container' => false,
'echo' => false
)
)
)
)
);
wp_nav_menu(
array(
'theme_location' => 'handheld',
'container_class' => 'handheld-navigation',
)
);
?>
</nav><!-- menu -->
<?php
}