Хочу внести небольшие css-правки на основе выбора верхнего (корневого) меню.
Как правильно это сделать в WP?
//редактировать// Это веб-сайт (страницы), а не блог, и в основном цвета некоторых ссылок и некоторых изображений должны зависеть от выбранного элемента верхнего меню.
Пример, структура страницы:
* Начинать * Продукты * Категория товаров. * Продукт * Услуги * Список услуг * Вложенный * Контакт * Главный офис * Список сотрудников * За рубежом * Другой список
Верхний уровень находится в верхнем меню, одноуровневый, а уровни 2 и 3 — во вложенном левом меню. Теперь второстепенные цветные элементы бокового меню меняются в зависимости от выбранного элемента верхнего меню.
//конец редактирования//
С уважением, / т
Можете ли вы уточнить, какого изменения вы пытаетесь достичь… перейти в меню навигации, перейти на отображаемую страницу и т. д.?
Вы говорите о внешнем меню или о внутреннем меню (например, пользовательском интерфейсе администратора)?
И как вы строите свое меню, используете ли вы
wp_nav_menu()
(например, основную функцию пользовательских навигационных меню) или что-то еще, напримерwp_list_pages()
илиwp_page_menu()
?@чип, спасибо за помощь. Несколько лет не пользовался WP, так что надо наверстать упущенное. Советы приветствуются.
@chip, чтобы ответить на ваш вопрос, я рассматриваю возможность использования либо новых функций основного меню, либо просто использования одного дерева и попытки скрыть другие меню (контекстные меню, не описанные в исходном Q), скрывая их с помощью настраиваемых полей. Я, вероятно, разберусь с этим, но еще лучше, если это будет соответствовать способу WP-гуру.
Снимаю шляпу за очень хорошо изложенный ответ. Изучу это позже. Большое спасибо.
Спасибо, Марк, я не могу стилизовать на основе идентификатора, он должен быть связан с родительским элементом верхнего меню. По мере добавления нового контента (клиентом) расцветка должна быть правильной.
Мой ответ добавляет класс к
<body>
элементу черезbody_class
фильтр. Вероятно, это самый простой способ применить дополнительное форматирование к любому элементу на странице. Добавлены классыwpse14430_products
илиwpse14430_services
(wpse14430_contact
на основе слагов верхних страниц в вашем примере).С использованием
wp_nav_menu()
Если вы используете
wp_nav_menu()
для отображения меню, WordPress строит дерево пунктов меню. Мы можем использовать эту информацию, чтобы получить верхнюю страницу текущего элемента. Единственная проблема: нам нужно это в<body>
теге, то есть до отображения меню. Решение состоит в том, чтобы сохранить меню в переменной, которую мы позже повторим сами.Взяв в качестве примера тему Twenty Ten, я перемещаю
wp_nav_menu()
вызов в первый<?php
блок:И там, где мы раньше это вызывали, теперь мы повторяем наш сохраненный вывод:
wp_nav_menu()
имеет интересный фильтр, вызываемый после того, как пункты меню упорядочены и имеют свои классы. Классы уже содержат информацию о предках. Мы подключаемся к этому фильтру и находим первый элемент, который является текущим элементом или его предком:Теперь у нас есть верхняя страница, и нам нужно только добавить ее в класс body:
Использование страниц в качестве структуры меню
Если вы не используете,
wp_nav_menu()
а вместо этого используете прямой порядок страниц, вы также можете проверить предков. Помните, что если вы не определяете меню с помощью новой системы меню, но по-прежнему отображаете список страниц с помощьюwp_nav_menu()
(резервной функции), описанная выше система будет работать для вас.Если вы выводите меню с помощью wp_list_pages/category или встроенного конструктора меню, то каждой ссылке на страницу или категорию назначается класс, который вы можете стилизовать. Это означает, что текущая страница или раздел, на котором находится пользователь, будет иметь класс, который затем можно будет стилизовать так, чтобы он выглядел «активным».
Ссылки на родительскую страницу будут отображаться:
current_page_item или current-menu-item (когда активен верхний уровень) current_page_ancestor или current-menu-ancestor (когда активен первый дочерний элемент)
Ссылки на категории будут отображаться:
current-cat (когда активен верхний уровень) current-cat-parent (когда активен первый дочерний элемент)
Существуют и другие классы, которые WP будет автоматически вставлять в тег li пунктов меню, в зависимости от глубины.
Я предполагаю, что это то, что вы хотели сделать, поэтому я надеюсь, что это поможет.