Intereting Posts
Как отобразить некоторые выбранные метаданные пользователя на определенной странице с помощью короткого кода? modrewrite не работает над настройкой Apache Как добавить контент на панель инструментов в WordPress? redirect_to игнорирование SSL Установите meta_key и meta_value для всех зарегистрированных пользователей в WordPress с помощью SQL-запроса has_excerpt дает true, но post_excerpt при получении Удаление / скрытие виджета на пользовательском шаблоне Роли пользователей не застревают У меня на моем сайте много разных продуктов, как я могу их отображать в определенных категориях? аргументы фильтра woocommerce_email_attachments Разная компоновка, основанная на количестве сообщений? Приостановка и возобновление результатов WP_Query Тема: Двадцать четырнадцать, Карусель Слайдер по категориям ниже заголовка Дополнительные поля и загрузка мультимедиа Запускать одноразовый скрипт, вызывающий функции плагина

Есть ли способ добавить класс к текущему пункту меню?

При использовании функции wp_nav_menu текущая разметка меню обычно выглядит так:

 <li id="menu-item-19" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-8 current_page_item menu-item-19"> <a href="http://domain.com/page-name/">Page Name</a> </li> 

Мне интересно, есть ли способ добавить класс к текущему элементу в меню, когда есть выбранный элемент. Что-то вроде non-current-menu-item .

Это добавило бы очень интересные возможности css.

Заранее спасибо.

Разметка wp_nav_menu может быть полностью настроена с использованием класса Walker .

Вот код, который я использовал:

functions.php

 class Walker_Menu extends Walker { var $db_fields = array( 'parent' => 'menu_item_parent', 'id' => 'db_id' ); function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { if (is_front_page()) { $output .= sprintf( "\n<li id='menu-item-%s'><a href='%s'>%s</a></li>\n", sanitize_title($item->title), $item->url, $item->title ); } else { $output .= sprintf( "\n<li id='menu-item-%s'%s><a href='%s'>%s</a></li>\n", sanitize_title($item->title), ( $item->object_id == get_the_ID() ) ? ' class="current-menu-item"' : 'class="non-current-menu-item"', $item->url, $item->title ); } } } 

header.php

 wp_nav_menu(array( 'menu' => 'Main Menu', 'walker' => new Walker_Menu() )); 

Он добавляет элемент non-current-menu-item для каждого элемента li, но текущий элемент меню, и он не будет делать этого на первой странице.

Огромное спасибо dingo_d за указание класса!