У меня есть структурированное пользовательское меню:
- родитель 1
- дети1_1
- дети1_2
- родитель 2
- дети2_1
- дети2_2
- родитель 3
- родитель 4
- дети4_1
и т.п.
Я хочу следующее: на каждой странице элементы родительского уровня будут отображаться как главное меню.
Если элемент родительского уровня активен, я хочу показать элементы дочернего меню в виде отдельного списка где-то еще на странице.
Есть ли «простой» способ добиться этого, или мне нужно каждый раз перечислять меню и выбирать текущее с помощью PHP и иметь головную боль для этого в течение нескольких дней? 🙂
Спасибо, Кадерн
Для этого были созданы JQuery и css.
Нет, спасибо, я хочу, чтобы он работал без js (например, Opera Mini), а также SEO-доказательство.
Спасибо! Хотя я не хочу помещать его в виджет, этот код действительно делает всю грязную работу.
Как этот плагин решает исходный вопрос?
Этот плагин делает именно то, что вы хотите!
Это должно быть довольно просто выполнить, используя два вызова
wp_list_pages()
и соответствующие переменные.Для основного (то есть верхнего уровня) навигационного меню просто используйте
depth
аргумент, например:Это выведет меню всех страниц верхнего иерархического уровня.
Для вторичного меню навигации (то есть дочерней страницы) просто возьмите идентификатор текущей страницы и передайте его в качестве
child_of
аргумента. Для этого требуется установить переменную$post->ID
внутри цикла, чтобы она была доступна вне цикла.например внутри цикла:
А затем вне цикла, для меню навигации дочерней страницы:
Единственное предостережение заключается в том, что это меню дочерней страницы должно идти после цикла, иначе вам нужно будет сделать начальный проход через цикл, найти
$post->ID
, а затемrewind_posts()
перед циклом.Разве вы не можете просто добавить код CSS в свой style.css что-то вроде
display: inline-block;
(вместоdisplay: none;
)ul.sub-menu
дляli.current_page_item
?