Как добавить класс для ul в навигации

12 июн. 2015 г., 16:27:28
Просмотры: 49.8K
Голосов: 5

Я изучаю конвертацию HTML в WordPress и хочу преобразовать класс следующим образом:

<div class="mainmenu pull-left">
    <ul class="nav navbar-nav collapse navbar-collapse">
        <li><a href="index.html" class="active">Главная</a></li>
        <li class="dropdown"><a href="#">Магазин<i class="fa fa-angle-down"></i></a>
            <ul role="menu" class="sub-menu">
                <li><a href="shop.html">Товары</a></li>
                <li><a href="product-details.html">Детали товара</a></li> 
                <li><a href="checkout.html">Оформление заказа</a></li> 
                <li><a href="cart.html">Корзина</a></li> 
                <li><a href="login.html">Вход</a></li> 
            </ul>
        </li> 
        <li class="dropdown"><a href="#">Блог<i class="fa fa-angle-down"></i></a>
            <ul role="menu" class="sub-menu">
                <li><a href="blog.html">Список блогов</a></li>
                <li><a href="blog-single.html">Отдельный блог</a></li>
            </ul>
        </li> 
        <li><a href="404.html">404</a></li>
        <li><a href="contact-us.html">Контакты</a></li>
    </ul>
</div>

Вот что я сделал:

if ( ! function_exists( 'mytheme_setup' ) ) :
    function wpflex_setup() {  
        register_nav_menus( array(
            'primary' => 'Основное меню'
        ) );
    }
endif;

wp_nav_menu( array( 
    'theme_location' => 'top-menu',
    'container'      => '',
    'menu_class'     => 'mainmenu pull-left',
) );

Как добавить класс для тега <ul>?

0
Все ответы на вопрос 5
1

Вы уже сделали всё правильно. Если посмотреть в документации для wp_nav_menu, то видно, что параметр menu_class задаёт класс для элемента UL:

wp_nav_menu( array(
    'theme_location' => 'top-menu', // расположение меню в теме
    'container' => '', // отключаем контейнер
    'menu_class'=> 'mainmenu pull-left *добавьте-свой-класс-здесь*' // класс для ul
 ) );
12 июн. 2015 г. 17:54:46
Комментарии

Не забудьте 'container' => 'ul',

Richard Lindhout Richard Lindhout
30 авг. 2016 г. 17:12:55
0

Это просто - вам нужно добавить параметр items_wrap и добавить или изменить атрибут class:

wp_nav_menu( array(
    'theme_location' => 'top-menu',
    'container' => false,
    'items_wrap' => '<ul class="nav your_custom_class">%3$s</ul>',
));
12 июн. 2015 г. 20:55:40
1

Wordpress создаёт меню страниц по умолчанию, отличное от активных меню — тех, которые вы создаёте и назначаете в админке. Нет прямого способа добавить классы к UL в меню страниц, но есть другие варианты. Попробуйте добавить этот код в ваш файл functions.php:

function add_id_and_classes_to_page_menu( $ulclass ) {
  return preg_replace( '/<ul>/', '<ul id="main-menu" class="nav navbar-nav collapse navbar-collapse">', $ulclass, 1 );
}
add_filter( 'wp_page_menu', 'add_id_and_classes_to_page_menu' );

Учтите, что это заменит все существующие id и классы, поэтому в примере выше я их добавил заново. Также я добавил id="main-menu" для полноты.

25 февр. 2017 г. 07:09:10
Комментарии

Грязный код, но это был единственный способ заставить его делать то, что мне нужно. Спасибо!

Jimmy Pelton Jimmy Pelton
29 сент. 2021 г. 00:39:54
0

Вот ваш исправленный код. Я протестировал его, добавил класс к элементу ul

wp_nav_menu( array( 
    'theme_location' => 'top-menu',
    'container'      => 'ul',
    'menu_class'     => 'mainmenu pull-left',
) );
27 апр. 2017 г. 20:59:28
0
       <?php 
         wp_nav_menu( array('menu' => 'Главное меню' ,
        'menu_class' => 'nav navbar-nav',
         'container' => ''));
            ?>
29 мая 2017 г. 10:38:05