Menu de navegação com filhos mostrado apenas para a página atual

3

Estou brincando com a funcionalidade de menu do Wordpress (wp_nav_menu e wp_list_pages) para criar um menu para o meu site. Está chegando, mas ainda estou tendo problemas em conseguir o comportamento que gostaria.

O que eu gostaria é algo como o menu da barra lateral neste site (não WP): enlace

Quando você clica em uma subpágina que tem filhos, o menu exibe esses filhos: enlace

Atualmente tenho este código:

            <?php // sidebar menu
        if ($post->post_parent) {
            $ancestors=get_post_ancestors($post->ID);
            $root=count($ancestors)-1;
            $parent = $ancestors[$root];
        } else {
            $parent = $post->ID;
        }

        $children = wp_list_pages("title_li=&child_of=". $parent ."&echo=0");

        if ($children) { ?>
        <ul id="subnav">
        <?php echo $children; ?>
        </ul>
        <?php } ?>

Isso funciona, mas isso mostra os filhos que todas as subpáginas têm, não apenas os filhos da página atual. Um exemplo do que quero dizer: enlace

Algum tem alguma ideia para fazer isso funcionar?

    
por 23.02.2011 / 12:39

1 resposta

0

Se você não se importa em usar um plug-in, posso dizer como consegui que isso funcionasse no passado.

  1. Adicione o seguinte código ao seu functions.php
    function get_root_parent($page_id) {
    global $wpdb;
    $parent = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE post_type='page' AND ID = '$page_id'");
    if ($parent == 0) return $page_id;
    else return get_root_parent($parent);
    }
    
  2. Adicione o seguinte ao header.php entre o fechamento da cabeça e a abertura do corpo em um wrapper php
    <?php
    $GLOBALS["parentId"] = get_root_parent($post->ID);
    ?>
    
  3. Baixe e instale o plug-in de dobra de páginas: enlace

  4. Adicione o seguinte código ao seu sidebar.php
    <ul>
    <?php
    $thispage = $wp_query->post;
    if ($thispage->post_parent!=0) {
            wswwpx_fold_page_list("sort_column=menu_order&child_of=".$GLOBALS["parentId"]."&title_li=&amp;child_of=".$thispage->post_parent);
          } else {
            wswwpx_fold_page_list("sort_column=menu_order&child_of=".$GLOBALS["parentId"]."&title_li=&amp;child_of=".$thispage->ID);
          }?>
        </ul>
     
    
por PNMG 23.02.2011 / 15:01

Tags