Как добавить класс к определенному элементу li в wp_nav_menu

Я пытаюсь добавить класс к элементам li в моем WordPress wp_nav_menu. Я последовал за парой ответов здесь, но могу заставить работать только часть. Так что для моего меню навигации у меня есть>

functions.php >

//REGISTER NAVIGATION MENU
function smtg_menus() {
  register_nav_menus(
    array(
      'header-menu' => __( 'Header Menu' ),
      'footer-menu' => __( 'Footer Menu' )
    )
  );
}
add_action( 'init', 'smtg_menus' );

Этот код добавляет выпадающий класс nav-links в выпадающее меню категорий.

function my_nav_menu_submenu_css_class( $classes ) {
    $classes[] = 'nav-links-dropdown';
    return $classes;
}
add_filter( 'nav_menu_submenu_css_class', 'my_nav_menu_submenu_css_class' );

Header.php >

$args = array(
    'theme_location'  => 'header-menu',
    'container'       => 'nav',
    'container_class' => '',
    'container_id'    => '',
    'menu_class'      => '',
    'menu_id'         => '',
    'fallback_cb'     => false );
wp_nav_menu( $args );

В основной навигации у меня есть 4 элемента li, и только один из этих элементов li имеет подменю, или раскрывающийся список.

Я не могу понять, как добавить класс к li, у которого есть выпадающий список, чтобы вызвать выпадающее меню.

Глядя на страницу источника, я вижу>

<!-- START NAV INSIDE NAV BAR -->
<nav class="menu-header-menu-container">
    <ul id="menu-header-menu" class="">
        <li><a href="#">Home</a></li>
        <li><a href="#">Categories</a>
            <ul  class="sub-menu nav-links-dropdown">
                <li><a href="#">Cat1</a></li>
                <li><a href="#">cat2</a></li>
                <li><a href="#">cat3</a></li>
                <li><a href="#">cat4</a></li>
                <li><a href="#">cat5</a></li>
                <li><a href="#">cat6</a></li>
            </ul>
        </li>
        <li><a href="#">Page 3</a></li>
        <li><a href="#">Page 4</a></li>
    </ul>
</nav>

На втором элементе LI - мне нужно добавить к нему класс cats-li-dropdown для отображения выпадающего меню. Я не могу понять, как сделать это в php где-нибудь.

Прямо сейчас я использую jquery для добавления класса cats-li-dropdown ко 2-му элементу, вот так.

$('nav li:nth-child(2)').addClass('cats-li-dropdown');

Как я могу избежать использования jquery для добавления класса ко второму элементу li?

Я уже пытался добавить класс в WordPress в пунктах меню, но он все еще остается пустым, когда я смотрю на исходный код страницы.

Это ничего не добавило к элементу li, хотя, похоже, так и должно быть. Есть другие идеи?

Класс вошел в пункты меню в WordPress Admin - не добавляет его на странице

1 ответ

Для пользовательских классов CSS, не показывающих проблему, попробуйте добавить menu параметр:

$args = array(
    'menu'  => 'header-menu',
    'theme_location'  => 'header-menu',
    'container'       => 'nav',
    'container_class' => '',
    'container_id'    => '',
    'menu_class'      => '',
    'menu_id'         => '',
    'fallback_cb'     => false );
wp_nav_menu( $args );
Другие вопросы по тегам