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


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

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

Спасибо!

Джон

 9
Author: Krzysiek Dróżdż, 2010-09-02

3 answers

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

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

 12
Author: Jan Fabry, 2010-09-02 16:25:58

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

 2
Author: Chris_O, 2010-09-02 09:32:10

Ян упомянул фильтр 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
Author: Ross, 2016-05-24 18:14:09