Получение WordPress wp_list_pages для перечисления только соответствующих детей (чертовски сложно) - PullRequest
0 голосов
/ 23 сентября 2010

вот один из самых ярких из вас:

Я создал огромный динамический список дочерних страниц.

У меня есть 3 уровня, вот пример:

  • Родитель
    • ребенок
      • дочерний ребенок
      • дочерний ребенок
    • дочерний элемент
    • дочерний элемент
      • дочерний
      • дочерний

Вот как необходимо для работы:

Находясь на родителе, показать это:

  • Родитель (текущий)
    • child
    • child
    • child

При нажатии на ребенка, у которого есть сабы, нужно показать это:

  • Родитель
    • дочерний (текущий)
      • дочерний
      • дочерний
    • дочерний
    • дочерний

(то же самое будет показано, если пользователь перейдет к дочернему элементу)

Вот когда у меня возникают проблемы: я использую wp_list_pages для генерацииВ списках и глубине, чтобы показать подпрограммы, когда мне нужно, проблема в том, что она дает мне все подпрограммы в стеке, хотя мне нужны только подпрограммы текущей страницы (или предка текущих страниц, который будетпервый дочерний элемент в дереве), который будет показан, а остальные дочерние элементы будут скрыты при отображении всех дочерних элементов.

Таким образом, вместо отображения списка выше, он дает мне полный список:

  • Parent
    • child (текущий)
      • sub child
      • sub child
    • child
    • child
      • sub child
      • sub child

Теперь я могу легко получить список текущихбратья и сестры, могут получить дочерние элементы тока, это место в дереве, нет проблем, я даже могу решить эту проблему, разделив вывод wp_list_pages и подняв ток наверх, его подпрограммы находятся под ним и на других не открытых страницахниже этого, но это не цель.

Так, есть кто-нибудь, кто может понять это?

С другой стороны: Вот не очень кошерный обходной путь jQuery, который я сделал (удалив ненужные элементы с помощью javascript), проблема все еще остается, можем ли мы заставить WordPress сделать это без хаков javascript?

$("#side_nav li").not(".current_page_item").not(".current_page_ancestor").not(".current_page_parent").has("ul.children").children("ul.children").remove();

1 Ответ

1 голос
/ 23 сентября 2010

вы можете использовать get_children для него.

Я обычно помещаю функцию в functions.php для бессмысленного поиска в правильном порядке, например

function get_kids($id) {
  get_children('post_parent='.$id.'&order=ASC&orderby=menu_order&post_status=publish')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...