Как добавить свой 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 не будет опубликован.

Ещё статьи по теме
Pin It on Pinterest