Задать разные фильтры к разным меню?

172
26 февраля 2018, 02:18

Здравствуйте! подскажите как решить, на странице есть меню, в шапке, и в подвале, я применил фильтры к меню как сделать разные фильтры, к разным меню

add_action('after_setup_theme', function(){
register_nav_menus([
    'top' => 'Меню в шапке',
    'bottom' => 'Меню в подвале'
 ]);
})
add_filter( 'wp_nav_menu_objects', 'filter_function_nav_top', 10, 2);
function filter_function_nav_top($items) {
foreach ( $items as $item ) {
    if (!$item->menu_item_parent) {
        $item->title = '<span class="nav__item-title">' . $item->title . '</span>';
    }
}
  return $items;
}
add_filter('nav_menu_item_id', '__return_false');
add_filter('nav_menu_css_class', 'my_css_attributes_filter');
function my_css_attributes_filter($var) {
  $allow = ['nav__item','active', 'nav__link', 'nav__item-title'];
  return is_array( $var ) ? array_intersect( $var, $allow ) : ”;
}
add_filter('nav_menu_css_class', 'my_css_class_filter', 10, 2);
function my_css_class_filter($classes, $item) {
  $classes[] = 'nav__item';
  return $classes;
}
add_filter( 'nav_menu_link_attributes', 'filter_function_top_link');
function filter_function_top_link($atts) {
  $atts['class'] = 'nav__link';
  return $atts;
}
Answer 1

У функции nav_menu_css_class() не 1 аргумент, а 4. Из $args извлеките информацию о меню.

add_filter('nav_menu_css_class', 'my_css_attributes_filter', 10, 4);
function my_css_attributes_filter( $var, $item, $args, $depth ) {
// анализируйте $args->menu
$allow = ['nav__item','active', 'nav__link', 'nav__item-title'];
return is_array( $var ) ? array_intersect( $var, $allow ) : ”;
}

Та же история с nav_menu_link_attributes().

READ ALSO
Запись в куки, php

Запись в куки, php

есть файл "loginphp", в нём я создаю куку

161
Отправка данных не поступает в базу данных, пересмотрел код 10 раз, не могу найти ошибку

Отправка данных не поступает в базу данных, пересмотрел код 10 раз, не могу найти ошибку

Это код create_userhtml, сама форма регистрация и отправка данных в create_user

201
Можно ли создавать классы, содержащие объекты этого же класса?

Можно ли создавать классы, содержащие объекты этого же класса?

Можно ли создавать классы, содержащие в качестве данных объекты этого же класса, указатели/ссылки на такие объекты, их массивы?

167
Проблема с accept() сокеты С++

Проблема с accept() сокеты С++

При запуске сервера _Client получает верное значение128 или 126 или 132 например

143