Wordpress primary navigation ul, li class override

杀马特。学长 韩版系。学妹 提交于 2020-01-25 07:05:08

问题


This is how I override ul, li classes (BEM notation) in primary navigation in Wordpress. This support nested menu elements. Steps: 1. Create menu 2. make sure that you disabled echo in wp_nav_menu by "'echo' => false" 3. put echo before first preg_replace My Menu doesn't have additional wrapper

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

}

来源:https://stackoverflow.com/questions/59847953/wordpress-primary-navigation-ul-li-class-override

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!