Порядок сортировки wp_list_pages по порядку верхнего навигационного меню и дочерний элемент

Im пытается показать окно на левой боковой панели со ссылками подменю текущей страницы. но порядок не применяется так же, как меню! в чем проблема?

<div class="sidebar-box"> <div class="sidebar-box-title"> <h4><?php echo get_the_title($post->post_parent); ?></h4> </div> <ul class="links"> <?php wp_list_pages('sort_order=asc&title_li=&sort_column=menu_order&depth=1&child_of='.$post->post_parent); ?> </ul> </div> 

ДЕМО: http://www.testhosting.co.uk/speedshealthcare/healthcare-supplies/care-home-pharmacy/

Потому что вы заказываете только через menu_order , а не в menu_order post_title . Фактически, вы можете просто избавиться от своих аргументов sort_* поскольку по умолчанию wp_list_pages выдаст правильный естественный порядок.

Я нашел это http://wpsmith.net/2011/how-to-get-all-the-children-of-a-specific-nav-menu-item/

и написал этот код, поэтому он исправлен!

function get_nav_menu_item_children ($ menu, $ depth = true) {

  $post_id = $post_id ? : get_the_ID(); $menu_items = wp_get_nav_menu_items($menu); $parent_item_id = wp_filter_object_list($menu_items, array('object_id' => $post_id), 'and', 'menu_item_parent'); if (!empty($parent_item_id)) { $parent_item_id = array_shift($parent_item_id); $parent_post_id = wp_filter_object_list($menu_items, array('ID' => $parent_item_id), 'and', 'object_id'); if (!empty($parent_post_id)) { $parent_post_id = array_shift($parent_post_id); $parent_id= get_post($parent_post_id)->ID; } } $nav_menu_item_list = array(); foreach ((array) $menu_items as $nav_menu_item) { if ($nav_menu_item->post_parent == $parent_id) { $nav_menu_item_list[] = $nav_menu_item; } } return $nav_menu_item_list; 

}

Применение

  $menuSide=get_nav_menu_item_children('Main menu'); foreach ($menuSide as $link): $active=''; if(intval($post->ID)===intval($link->object_id)){ $active=' current_page_item '; } echo ' <li class="'.$active.'"><a href="'.$link->url.'">' . $link->title . '</a></li>'; endforeach;