it-swarm-ru.tech

Как вручную указать текущую активную страницу с помощью wp_nav_menu ()

Есть ли способ вручную указать, какая страница в настоящее время "активна" при использовании wp_nav_menu()?

У меня есть страница "Продукты", и на этой странице у меня есть ссылки на различные (динамические) пользовательские таксономии. Когда я нажимаю одну из этих таксономий, я остаюсь на странице "Продукты", но wp_nav_menu() теряет ссылку на тот факт, что я все еще на странице "Продукты". Есть ли способ, которым я могу это исправить?

Спасибо!

Джон

9
Jon

Если вы просто хотите добавить класс current_page_item к одному элементу меню, вы можете подключиться к фильтру nav_menu_css_class и добавить этот класс, если это необходимо. Это называется когда меню печатается .

Если вы хотите получить доступ ко всему меню и добавить классы, подключите фильтр wp_get_nav_menu_items, где вы получите весь массив $items. Вы можете редактировать свойства classes отдельных элементов.

12
Jan Fabry

@Jon Пока вы используете <body <?php body_class(); ?>>, WordPress будет назначать класс current_page_item вашему меню вместе с current_page_parent, если вы используете выпадающие меню.

2
Chris_O

Ян упомянул фильтр nav_menu_css_class, поэтому я посмотрел его, и этот пример был мне полезен. Источник: https://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_class

function my_special_nav_class( $classes, $item ) {
    if ( is_single() && $item->title == 'Blog' ) {
        $classes[] = 'special-class';
    }
    return $classes;
}    
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
0
Ross