Как добавить свой css-класс в пункт меню li с помощью аргументов wp_nav_menu()?
Wordpress

Как добавить свой css-класс в пункт меню li с помощью аргументов wp_nav_menu()?

В вордпресс для вызова меню в коде используется функция wp_nav_menu(). В неё могут передаваться различные параметры, такие как название меню (которое вы указали при его создании), которое нужно вывести, контейнер и css-класс для него. Также и класс можно указать для тега <ul> через эти параметры.

как добавить класс в пункт меню wordpress

Однако в стандартной функции нет параметра, который бы добавил css-класс в пункт меню li. Можно, конечно, обращаться к стандартным классам и всё на этом. Но мы столкнулись с ситуацией, когда вёрстка уже подготовлена (не нами,) а нам её нужно натянуть на wordpress. Чтобы не проделывать лишнюю работу, заменяя названия классов, которые в вёрстке имеют свою структуру и логику, на названия классов wordpress, мы просто добавим несколько строк кода, которые добавят названия классов из вёрстки.

Первое, что нужно сделать, добавить в functions.php функцию, которая добавляет новый параметр в wp_nav_menu().

function add_additional_class_on_li($classes, $item, $args) {
    if(isset($args->add_li_class)) {
        $classes[] = $args->add_li_class;
    }
    return $classes;
}
add_filter('nav_menu_css_class', 'add_additional_class_on_li', 1, 3);

И затем при вызове меню в коде, просто добавить этот параметр ( ‘add_li_class’ => ‘your-class-name1 your-class-name-2’) в общий список. Например, это может выглядеть так:

$args = array(
    'container'     => '',
    'theme_location'=> 'your-theme-loc',
    'depth'         => 1,
    'fallback_cb'   => false,
    'add_li_class'  => 'your-class-name1 your-class-name-2'
    );
wp_nav_menu($args);

Или без выноса параметров в отдельную переменную, можно сделать так:

<?php wp_nav_menu('add_li_class'  => 'your-class-name1 your-class-name-2']); ?>

На всякий случай упомянем, что в примере указано два класса “your-class-name1” и “your-class-name-2”. Вы можете их заменить на свои, или оставить только один, или добавить сколько угодно ещё классов.

Комментариев нет

Оставить комментарий

Ваш email не будет опубликован.

Ещё статьи по теме