Меню навигации с детьми, отображаемыми только для текущей страницы

Я играл с функциональностью меню WordPress (wp_nav_menu и wp_list_pages), чтобы создать меню для моего сайта. Это идет, но у меня все еще есть проблемы с поведением, которое я бы хотел.

Что бы я хотел, это что-то вроде меню боковой панели на этом веб-сайте (а не WP): http://www.fairfood.org/facts/sustainability-agenda/

Когда вы нажимаете на подстраницу с дочерними элементами, в меню отображаются эти дети: http://www.fairfood.org/facts/production-chains/

У меня есть этот код:

<?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 } ?> 

Это работает, но это показывает детям, что есть все подстраницы, а не только дети текущей страницы. Пример того, что я имею в виду: http://test.fairfood.org/facts/

У кого-нибудь есть идея сделать эту работу?

Solutions Collecting From Web of "Меню навигации с детьми, отображаемыми только для текущей страницы"

Если вы не возражаете использовать плагин, я могу рассказать вам, как я получил это, чтобы работать в прошлом.

  1. Добавьте следующий код в свои функции.
      function get_root_parent ($ page_id) {
     глобальный $ wpdb;
     $ parent = $ wpdb-> get_var ("SELECT post_parent FROM $ wpdb-> posts WHERE post_type = 'page' AND ID = '$ page_id'");
     if ($ parent == 0) возвращает $ page_id;
     else return get_root_parent ($ parent);
     }
    
  2. Добавьте следующее в header.php между закрытием головы и открытием тела в php-обертке
     <? PHP
     $ GLOBALS ["parentId"] = get_root_parent ($ post-> ID);
     ?>
    
  3. Загрузите и установите плагин с плагинами: http://www.webspaceworks.com/resources/wordpress/30/
  4. Добавьте следующий код на ваш 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 = & амп; child_of =".. $ thispage-> post_parent);
           } else {
             wswwpx_fold_page_list (. "sort_column = menu_order & child_of =" $ GLOBALS [ "ParentId"] "& title_li = & амп; child_of =".. $ thispage-> ID);
           }?>
         </ UL>