it-swarm-es.com

Cómo especificar manualmente la página activa actual con wp_nav_menu ()

¿Hay alguna forma de especificar manualmente qué página está actualmente "activa" cuando se usa wp_nav_menu()?

Tengo una página de "Productos", y en esa página tengo enlaces a varias taxonomías personalizadas (dinámicas). Cuando hago clic en una de estas taxonomías, me quedo en la página "Productos" pero wp_nav_menu() pierde la referencia a ese hecho de que todavía estoy en la página "Productos". ¿Hay alguna manera de que pueda solucionar esto?

¡Gracias!

Jon

9
Jon

Si solo desea agregar la clase current_page_item a un elemento del menú, puede conectarse al filtro nav_menu_css_class y agregar esa clase si es necesario. Se llama cuando se imprime el menú .

Si desea acceder a todo el menú y agregar clases, conéctese al filtro wp_get_nav_menu_items, donde obtendrá la matriz $items completa. Puede editar las propiedades classes de elementos individuales.

12
Jan Fabry

@Jon Mientras esté usando <body <?php body_class(); ?>> WordPress asignará la clase current_page_item a su menú junto con current_page_parent si está usando los menús desplegables.

2
Chris_O

Jan mencionó el filtro nav_menu_css_class, así que lo busqué y este ejemplo me ayudó. Fuente: 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