Добавление "активного" класса в родительский элемент текущего поста-предка в WordPress
У меня есть такое меню в WordPress
- Родительский элемент (страница)
- Детский предмет (категория)
Когда я нахожусь на странице " Дочерний элемент (категория) ", к "Родительскому элементу" добавляется класс current-menu-parent, что весьма полезно. Но когда я просматриваю одно из сообщений из дочернего элемента (категории), в "Родительский элемент" не добавляется специальный класс. Только класс "текущий пост-предок" добавлен в дочерний элемент (категорию) . Как добавить класс в "Родительский элемент" при просмотре сообщения из дочернего элемента (категории)?
Примечание: я хочу решение PHP, решение Javascript/Jquery не принимается.
Обновить:
Это то, что я до сих пор. Но это добавление класса ко всему родительскому элементу, у которого есть дочерний элемент.
add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
if ( $item->menu_item_parent && $item->current_item_ancestor) {
$parents[] = $item->menu_item_parent;
}
}
foreach ( $items as $item ) {
if ( in_array( $item->ID, $parents ) ) {
$item->classes[] = 'active';
}
}
return $items;
}
1 ответ
Я нашел ответ на свой вопрос, это то, что я искал..
add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
if ( in_array('current-post-ancestor', $item->classes) ) {
$parents[] = $item->menu_item_parent;
}
}
foreach ( $items as $item ) {
if ( in_array( $item->ID, $parents ) ) {
$item->classes[] = 'current-menu-ancestor';
}
}
return $items;
}
Это добавит класс к родительскому элементу текущего элемента меню.