Mostrar apenas o segundo nível de navegação, dependendo da navegação ativa

4

Por exemplo, suponha um menu assim:

Parent 1
  Child A
  Child B
Parent 1
  Child C
  Child D
  Child E
Parent 2
  Child F

Em uma determinada parte do meu modelo, quero que algo apareça dependendo do "local" atual no menu. Se o usuário estiver nas páginas Parent 1 , Child C , Child D ou Child E , quero exibir um pequeno menu que diga Parent 1 como cabeçalho e filhos como links. Eu tentei uma variedade de coisas (criar um objeto walker personalizado, escrever css para simplesmente não mostrar os itens que não deveriam ser exibidos, etc.) Além disso, se não houver filhos, não quero exibir o pai, mesmo na própria página dos pais. Isso faz sentido?

Eu não quero um plugin que faça / ajude com isso (eu não gosto de ter o meu modelo "depender" de um plugin)

    
por Matthew 05.04.2012 / 00:11

1 resposta

1

Tente isso - não o implementei totalmente, mas testei e parece funcionar. Coloque-o em seu functions.php e chame <?php list_child_pages(); ?> em seu modelo ou use o shortcode [childpages] em seu editor.

<?php
// List Child pages of a parent. 
function list_child_pages() {

global $post;

if ( is_page() && $post->post_parent )
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
    $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );

if ( $childpages ) { ?>
    <menu>
        <ul class="side-nav">
            <?php echo $string = $childpages; ?>
        </ul>
    </menu>
<?php   
}

return $string;

}
// Add Shortcode for additional support, not just in the theme template
add_shortcode('childpages', 'list_child_pages');

?>
    
por Greg McMullen 29.08.2014 / 14:24