Выделить элементы родительского меню текущего пост-предка - PullRequest
1 голос
/ 12 июня 2019

Страница 1 Страница 2 Категория 1 Страница 3

Таким образом, когда категория 1 активна, страница 2 получает .current-menu-ancestor, что нормально ... но как только просматривается сообщение категории 1, страница 2 не имеет определенных классов ... Но в категории 1 есть .current-menu-ancestor как и ожидалось.

Итак, наконец, вот вопрос: как мне назначить класс для этих родителей .current-post-ancestor?

Я ищу решение PHP. Javascript / jQuery довольно понятен… вот решение jQuery для лучшего понимания того, что я хочу сделать (и для тех, кто имеет ту же проблему и доволен решением JS):

jQuery ('li.current-post-ancestor') .parents ('li.menu-item') .addClass ('current-menu-ancestor');

1 Ответ

1 голос
/ 12 июня 2019

Это, наверное, то, что вы ищете.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;    
}

Добавит класс к текущему родительскому элементу пункта меню предка сообщения.Я пробовал это в моей теме, и она отлично работает.

...