Добавление "активного" класса в родительский элемент текущего поста-предка в 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;    
}

Это добавит класс к родительскому элементу текущего элемента меню.

Другие вопросы по тегам