Подменю класса ходунка wp_nav_menu отображается только на родительской странице - PullRequest
1 голос
/ 14 ноября 2011

Я искал и не могу найти собственный класс "Walker", который будет скрывать подменю от wp_nav_menu, пока вы не окажетесь на родительской странице. Я нашел много способов скрыть их или просто показать подменю, но не способ показать только подменю, когда вы находитесь в этом разделе. Ниже приведен пример того, как мне нужно это отобразить:

Структура Wp_nav_menu в ее текущем виде:

  • Родитель 1
  • Родитель 2
    • Ребенок 1
    • Ребенок 2
  • Родитель 3
    • Ребенок A
    • Ребенок B

-Display-

На родительском 1 / Домашняя страница:

  • Родитель 1
  • Родитель 2
  • Родитель 3

На дочерних страницах Родителя 2 и Родителя 2:

  • Родитель 1
  • Родитель 2
    • Ребенок 1
    • Ребенок 2
  • Родитель 3

Ответы [ 3 ]

5 голосов
/ 14 ноября 2011

Для этого вам не нужен пользовательский обходчик, это можно сделать с помощью классов CSS и отобразить: нет;

например. Вы можете начать с:

.menu .sub-menu { display: none; }
.menu .current-menu-item .sub-menu { display:block; }
.menu .current-menu-ancestor .sub-menu { display:block; }

С помощью нескольких дополнительных правил, основанных на классах, применяемых к тегу body, вы можете условно отображать и скрывать другие элементы меню, используя классы, добавленные в элементы меню через бэкэнд.

2 голосов
/ 14 мая 2013

По моему мнению, использование CSS для «скрытия» нежелательных уровней меню в лучшем случае является громоздким, а в худшем - «хакерским». Лично мне никогда не нравится выводить на страницу что-либо, чего не должно быть (когда этого можно избежать).

В настоящее время Wordpress не оказывает нам никакой пользы, так как не предлагает встроенную в wp_nav_menu опцию для ограничения глубины начала меню.

Я пробовал разные ходоки, виджеты и плагины, чтобы решить эту проблему, но я никогда не был очень доволен решениями, которые попробовал. Например, решение в плагине выше требует, чтобы вы передали идентификатор нужного подменю.

Я написал свой собственный плагин, который расширяет wp_nav_menu для добавления опции 'start_depth'. Это работает автоматически на любой подстранице без указания чего-либо.

Просто используйте такой код после установки плагина:

wp_nav_plus(array('theme_location' => 'primary_navigation', 'start_depth' => 1));

для всех, кто заинтересован, доступен на моем сайте: https://mattkeys.me/products/wp-nav-plus/

0 голосов
/ 09 марта 2012

Ответ выше верен - вы можете сделать это с помощью css, но технически меню все еще "там". Если вы хотите полностью исключить - вы можете использовать плагин, который я написал - здесь .

Пожалуйста, оцените и подтвердите, что это работает - я только выпустил это несколько дней назад. Я уже использовал его на нескольких сайтах. Мой первый плагин:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...