Realce o item de menu pai quando o filho não estiver no menu

4

Desejo destacar o pai de uma página filha no menu quando a própria página filha não está no menu.

Sei que isso funcionaria se você adicionar o filho como uma subpágina, mas esse não é o caso.

Alguma idéia?

    
por janw 15.05.2012 / 13:05

3 respostas

4

Alrdy entendeu:

<?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;
}
    
por janw 15.05.2012 / 13:16
0

Como alternativa à resposta do @ janw, você pode inserir o seguinte código no arquivo footer.php do tema logo antes da tag de fechamento do corpo.

<!-- 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 } ?>

Eu detalhei como esse código funciona em uma postagem aqui: Como manter o link de navegação da página principal destacado ao visualizar uma criança / subpágina !

    
por Bibiano Wenceslao 18.02.2015 / 15:43
0

A resposta aceita do @janw é muito próxima, mas get_post_anscestors() requer um WP Post ou o ID de um como um argumento para os documentos do WordPress:

enlace

Eu implementei assim e funciona muito bem:

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);

Gostaria apenas de deixar isso como um comentário, mas ainda não tenho a reputação, por isso, postar como resposta.

    
por jckstl 11.10.2016 / 17:25

Tags