web-development-kb-pt.site

Como especificar manualmente a página ativa atual com wp_nav_menu ()

Existe uma maneira de especificar manualmente qual página está atualmente "ativa" ao usar wp_nav_menu()?

Eu tenho uma página "Produtos" e, nessa página, tenho links para várias taxonomias personalizadas (dinâmicas). Quando clico em uma dessas taxonomias, fico na página "Produtos", mas wp_nav_menu() perde a referência a esse fato de que ainda estou na página "Produtos". Existe uma maneira que eu possa consertar isso?

Obrigado!

Jon

9
Jon

Se você quiser apenas adicionar a classe current_page_item a um item de menu, poderá conectar-se ao filtro nav_menu_css_class e adicionar essa classe, se necessário. É chamado quando o menu é impresso .

Se você quiser acessar o menu inteiro e adicionar classes, conecte-se ao filtro wp_get_nav_menu_items, onde você obtém o array $items inteiro. Você pode editar as propriedades classes de itens individuais.

12
Jan Fabry

@Jon Enquanto você estiver usando <body <?php body_class(); ?>> WordPress atribuirá a classe current_page_item ao seu menu junto com current_page_parent se você estiver usando menus suspensos.

2
Chris_O

Jan mencionou o filtro nav_menu_css_class, então eu procurei e este exemplo foi útil para mim Fonte: 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 );
0
Ross