Navigationsmenü mit Kindern, die nur für die aktuelle Seite angezeigt werden

Ich habe mit den Menüfunktionen von WordPress (wp_nav_menu und wp_list_pages) herumgespielt, um ein Menü für meine Seite zu erstellen. Es kommt, aber ich habe immer noch Schwierigkeiten, das Verhalten zu bekommen, das ich möchte.

Was ich möchte, ist etwas wie das Sidebar-Menü auf dieser Website (nicht WP): http://www.fairfood.org/facts/sustainability-agenda/

Wenn Sie auf eine Unterseite klicken, die untergeordnete Elemente enthält, werden im Menü diese untergeordneten Elemente angezeigt: http://www.fairfood.org/facts/production-chains/

Ich habe derzeit diesen Code:

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) { ?>   

Das funktioniert, aber das zeigt die Kinder, die alle Unterseiten haben, nicht nur die Kinder der aktuellen Seite. Ein Beispiel dafür, was ich meine: http://test.fairfood.org/facts/

Haben Sie irgendeine Idee, um das zu machen?

Solutions Collecting From Web of "Navigationsmenü mit Kindern, die nur für die aktuelle Seite angezeigt werden"

Wenn es Ihnen nichts ausmacht, ein Plugin zu benutzen, kann ich Ihnen sagen, wie ich das in der Vergangenheit geschafft habe.

  1. Fügen Sie Ihrer functions.php den folgenden Code hinzu
      function get_root_parent ($ page_id) {
     global $ wpdb;
     $ parent = $ wpdb-> get_var ("SELECT post_parent VON $ wpdb-> posts WHERE post_type = 'seite' AND ID = '$ page_id'");
     if ($ parent == 0) gibt $ page_id zurück;
     sonst return get_root_parent ($ parent);
     }
    
  2. Fügen Sie folgendes zu header.php zwischen dem Schließen des Kopfes und dem Öffnen des Körpers in einem PHP-Wrapper hinzu
     < ? php
     $ GLOBALS ["parentId"] = get_root_parent ($ post-> ID);
     ?>
    
  3. Laden Sie das Foldseiten-Plugin herunter und installieren Sie es: http://www.webspaceworks.com/resources/wordpress/30/
  4. Fügen Sie Ihrer sidebar.php den folgenden Code hinzu
     
      < ? php $ thispage = $ wp_query-> post; if ($ thispage-> post_parent! = 0) { wswwpx_fold_page_list ("Sortierreihenfolge = menu_order & child_of =". $ GLOBALS ["parentId"]. "& title_li = & amp; child_of =". $ thispage-> post_parent); } sonst { wswwpx_fold_page_list ("Sortierspalte = menu_order & child_of =". $ GLOBALS ["parentId"]. "& title_li = & amp; child_of =". $ thispage-> ID); }?>