Ответы пользователя по тегу WordPress
  • Как показать подпункты только активного элемента меню WordPress?

    @yes_body
    в functions.php

    function menu_childs_only( $items, $args ) {

    if ( empty($args->childs_only) ) // если параметр не был передан
    return $items; // обычный вывод меню
    $newitems = array(); // подготовим пустые массивы
    $ids = array(); // здесь будут id всех активных пунктов
    foreach ( $items as $key => $item ) { // пробегаем по каждому элементу, этот
    if ( $item->current ) { // если элемент активный

    if ($item->menu_item_parent != 0) { // и если есть родительский элемент

    $ids[] = $item->menu_item_parent; // пишем его в массив
    }

    }
    }
    foreach ( $items as $key => $item ) { // пробежим еще раз

    if (in_array($item->menu_item_parent, $ids)) { // если id есть среди активных id
    $newitems[] = $item; // пишем весь элемент в массив новых элементов
    if ($item->current) { // если элемент активный
    $ids[] = $item->ID;
    }
    }
    }
    return $newitems; // возвращаем отфильтрованные элементы меню
    }

    add_filter( 'wp_nav_menu_objects', 'menu_childs_only', 10, 2 ); // хук

    в шаблоне

    wp_nav_menu( array(
    'childs_only' => 1, // тот самый параметр, который выводит отфильтрованное меню

    ) );
    Ответ написан
    Комментировать