Fügen Sie untergeordnete Seiten von Parent zu navbar PHP hinzu

Ich verwende eine function in einem benutzerdefinierten Thema, das die Navigation mit allen untergeordneten Seiten jedes übergeordneten Elements automatisch auffüllt. Ich habe den Code auf dieser Seite gefunden

Das funktioniert gut, aber das einzige, was diese function für mich nicht tut, ist die Reihenfolge der Seiten mit der Reihenfolge, die im Abschnitt Seiten in WordPress festgelegt wurde. Ich denke, ich muss etwas wie ‘sort_column = menu_order & title_li = & child_of =’ irgendwo im folgenden Code verwenden, aber kann nicht für das Leben von mir, wo?

/** * auto_child_page_menu * * class to add top level page menu items all child pages on the fly * @author Ohad Raz  */ class auto_child_page_menu { /** * class constructor * @author Ohad Raz  * @param array $args * @return void */ function __construct($args = array()){ add_filter('wp_nav_menu_objects',array($this,'on_the_fly')); } /** * the magic function that adds the child pages * @author Ohad Raz  * @param array $items * @return array */ function on_the_fly($items) { global $post; $tmp = array(); foreach ($items as $key => $i) { $tmp[] = $i; //if not page move on if ($i->object != 'page'){ continue; } $page = get_post($i->object_id); //if not parent page move on if (!isset($page->post_parent) || $page->post_parent != 0) { continue; } $children = get_pages( array('child_of' => $i->object_id) ); foreach ((array)$children as $c) { //set parent menu $c->menu_item_parent = $i->ID; $c->object_id = $c->ID; $c->object = 'page'; $c->type = 'post_type'; $c->type_label = 'Page'; $c->url = get_permalink( $c->ID); $c->title = $c->post_title; $c->target = ''; $c->attr_title = ''; $c->description = ''; $c->classes = array('','menu-item','menu-item-type-post_type','menu-item-object-page'); $c->xfn = ''; $c->current = ($post->ID == $c->ID)? true: false; $c->current_item_ancestor = ($post->ID == $c->post_parent)? true: false; //probbably not right $c->current_item_parent = ($post->ID == $c->post_parent)? true: false; $tmp[] = $c; } } return $tmp; } } new auto_child_page_menu(); 

Solutions Collecting From Web of "Fügen Sie untergeordnete Seiten von Parent zu navbar PHP hinzu"

$items die an diese function übergeben werden, sind bereits sortiert (siehe hier ). Du musst sie also noch einmal bestellen, bevor du return $tmp;

Ich fand schließlich die Reparatur für jeden, der das gleiche Problem hat:

  /** * auto_child_page_menu * * class to add top level page menu items all child pages on the fly * @author Ohad Raz  */ class auto_child_page_menu { /** * class constructor * @author Ohad Raz  * @param array $args * @return void */ function __construct($args = array()){ add_filter('wp_nav_menu_objects',array($this,'on_the_fly')); } /** * the magic function that adds the child pages * @author Ohad Raz  * @param array $items * @return array */ function on_the_fly($items) { global $post; $tmp = array(); foreach ($items as $key => $i) { $tmp[] = $i; //if not page move on if ($i->object != 'page'){ continue; } $page = get_post($i->object_id); //if not parent page move on if (!isset($page->post_parent) || $page->post_parent != 0) { continue; } $children = get_pages( array('child_of' => $i->object_id, 'sort_column' => 'menu_order') ); foreach ((array)$children as $c) { //set parent menu $c->menu_item_parent = $i->ID; $c->object_id = $c->ID; $c->object = 'page'; $c->type = 'post_type'; $c->type_label = 'Page'; $c->url = get_permalink( $c->ID); $c->title = $c->post_title; $c->target = ''; $c->attr_title = ''; $c->description = ''; $c->classes = array('','menu-item','menu-item-type-post_type','menu-item-object-page'); $c->xfn = ''; $c->current = ($post->ID == $c->ID)? true: false; $c->current_item_ancestor = ($post->ID == $c->post_parent)? true: false; //probbably not right $c->current_item_parent = ($post->ID == $c->post_parent)? true: false; $tmp[] = $c; } } return $tmp; } } new auto_child_page_menu();