petermolnar
  • 0
Эксперт

Список дочерних элементов активного родительского уровня пользовательского меню WordPress в виде отдельного меню

  • 0

У меня есть структурированное пользовательское меню:

  • родитель 1
    • дети1_1
    • дети1_2
  • родитель 2
    • дети2_1
    • дети2_2
  • родитель 3
  • родитель 4
    • дети4_1

и т.п.

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

Если элемент родительского уровня активен, я хочу показать элементы дочернего меню в виде отдельного списка где-то еще на странице.

Есть ли «простой» способ добиться этого, или мне нужно каждый раз перечислять меню и выбирать текущее с помощью PHP и иметь головную боль для этого в течение нескольких дней? 🙂

Спасибо, Кадерн

Share
  1. Этот плагин делает именно то, что вы хотите!

    • 0
  2. Это должно быть довольно просто выполнить, используя два вызова wp_list_pages() и соответствующие переменные.

    Для основного (то есть верхнего уровня) навигационного меню просто используйте depth аргумент, например:

    wp_list_pages( array(
         // display only top-level hierarchy
         'depth' => 1
    ) );
    

    Это выведет меню всех страниц верхнего иерархического уровня.

    Для вторичного меню навигации (то есть дочерней страницы) просто возьмите идентификатор текущей страницы и передайте его в качестве child_of аргумента. Для этого требуется установить переменную $post->ID внутри цикла, чтобы она была доступна вне цикла.

    например внутри цикла:

    $parent_page = get_the_ID();
    

    А затем вне цикла, для меню навигации дочерней страницы:

    wp_list_pages( array(
         // display all hierarchical levels
         'depth' => 0,
         // only children of the current Page
         'child_of' => $parent_page
    ) );
    

    Единственное предостережение заключается в том, что это меню дочерней страницы должно идти после цикла, иначе вам нужно будет сделать начальный проход через цикл, найти $post->ID, а затем rewind_posts() перед циклом.

    • 0
  3. Разве вы не можете просто добавить код CSS в свой style.css что-то вроде display: inline-block; (вместо display: none; ) ul.sub-menu для li.current_page_item ?

    • 0

Оставить ответ

You must login to add an answer.