Resaltar el elemento del menú principal cuando el niño no está en el menú

4

Quiero resaltar el elemento primario de una página secundaria en el menú cuando la propia página secundaria no está en el menú.

Sé que esto funcionaría si agregas al niño como una subpágina, pero ese no es el caso.

¿Alguna idea?

    
pregunta janw 15.05.2012 - 13:05

3 respuestas

4

Alrdy lo consiguió:

<?php //in functions.php
add_filter('nav_menu_css_class', 'highlight_portfolio', 12, 2);
function highlight_portfolio($classes, $item) {
    $parent = get_post_ancestors();
    $parent_ID = $parent[0];

    if ($parent_ID == $item->object_id) {
        array_push($classes, 'current-menu-ancestor');
    }
    return $classes;
}
    
respondido por el janw 15.05.2012 - 13:16
0

Como alternativa a la respuesta de @janw, puedes insertar el siguiente código en el archivo footer.php del tema justo antes de la etiqueta de cierre del cuerpo.

<!-- Highlight parent page link when on child page -->
<?php if (is_page()) {   //  displaying a child page ?>
    <script type="text/javascript">
        jQuery("li.current-page-ancestor").addClass('current-menu-item');
    </script>
<?php } ?>

He detallado cómo funciona este código en una publicación aquí: Cómo mantener el enlace de navegación de la página principal resaltado al ver un niño / subpágina !

    
respondido por el Bibiano Wenceslao 18.02.2015 - 15:43
0

La respuesta aceptada de @janw es muy cercana, pero get_post_anscestors() en realidad requiere una publicación de WP o la identificación de una como un argumento según la documentación de WordPress:

enlace

Lo implementé así y funciona muy bien:

function highlight_portfolio($classes, $item) {
    $parent = get_post_ancestors($item);
    $parent_ID = $parent[0];

    if ($parent_ID == $item->object_id) {
        array_push($classes, 'current-menu-ancestor');
    }
    return $classes;
}
add_filter('nav_menu_css_class', 'highlight_portfolio', 12, 2);

Simplemente dejaría esto como un comentario, pero aún no tengo la reputación, así que publico como una respuesta en su lugar.

    
respondido por el jckstl 11.10.2016 - 17:25

Lea otras preguntas en las etiquetas