Переопределение текущего выбранного пункта меню

У меня есть сайт WP 3.x, который я использую в основном как CMS. Меню ссылается на различные страницы WordPress.

Одной из страниц «Новости» является страница «Сообщения».

Однако при нажатии на одну из сообщений на странице новостей элемент «Новости» в меню теряет выделение, потому что сообщение не рассматривается как дочерний элемент «новостей».

Есть ли простой способ переопределить текущий выделенный элемент в меню? В идеале, вызывая идентификатор страницы.

Поскольку я предполагаю, что вы используете wp_nav_menu() , должен быть класс current_page_parent который применяется к пункту меню страницы ваших сообщений при просмотре одного сообщения.

Вы можете использовать этот класс для создания «активного» состояния, как будто вы, вероятно, сейчас работаете с current_page_item .

Если (по какой-либо причине) вы также должны добавить current_page_item , вы можете отфильтровать nav_menu_css_class :

 /** * Add the class 'current_page_item' to 'page for posts' menu item if we're * viewing a single post. * * @param array $class * @param object $item The current menu item. * @return array */ function add_current_class_to_posts_page( $classes, $item ) { static $posts_page; if ( ! is_single() ) return $classes; if ( ! isset( $posts_page ) ) $posts_page = get_option( 'page_for_posts' ); // cache as we may be calling this a lot! if ( $item->object == 'page' && $item->object_id == $posts_page ) $classes[] = 'current_page_item'; // this is the posts page! return $classes; } add_filter( 'nav_menu_css_class', 'add_current_class_to_posts_page', 10, 2 );