Как вручную указать текущую активную страницу с помощью меню wp nav()
Есть ли способ вручную указать, какая страница в данный момент "активна" при использовании wp_nav_menu()
?
У меня есть страница "Продукты", и на этой странице у меня есть ссылки на различные (динамические) пользовательские таксономии. Когда я нажимаю на одну из этих таксономий, я остаюсь на странице "Продукты", но wp_nav_menu()
теряет ссылку на тот факт, что я все еще на странице "Продукты". Есть ли способ это исправить?
Спасибо!
Джон
3 answers
Если вы просто хотите добавить класс current_page_item
в один пункт меню, вы можете подключиться к фильтру nav_menu_css_class
и при необходимости добавить этот класс. Он называется при печати меню.
Если вы хотите получить доступ ко всему меню и добавить классы, подключитесь к фильтру wp_get_nav_menu_items
, где вы получите весь массив $items
. Вы можете редактировать свойства classes
отдельных элементов.
@ Джон
Пока вы используете <body <?php body_class(); ?>>
WordPress назначит класс current_page_item
вашему меню вместе с current_page_parent
, если вы используете выпадающие меню.
Ян упомянул фильтр 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 );