获取wordpress wp_list_pages仅列出相关的孩子(很难得)

时间:2010-09-23 15:51:16

标签: php wordpress

这是最聪明的人:

我已经建立了一个巨大的动态子页面列表。

我有3个级别,这是一个例子:

      • 子孩子
      • 子孩子
      • 子孩子
      • 子孩子

以下是需要的工作原理:

在父母身上时,请显示:

  • 家长(当前)

当点击具有潜艇的孩子时,需要显示:

    • 孩子(当前)
      • 子孩子
      • 子孩子

(如果用户进入子孩子,则会显示相同的内容)

这是我遇到麻烦的时候:我正在使用wp_list_pages来生成列表和深度以在需要时显示潜艇,问题是,它给了我堆栈中的所有潜艇,即使我只是需要显示当前页面的子节点(或当前页面的祖先,它将是树中的第一个子节点)以及隐藏的其他子节点,同时显示所有子节点。

因此,它不是显示上面的列表,而是给出了完整列表:

    • 孩子(当前)
      • 子孩子
      • 子孩子
      • 子孩子
      • 子孩子

现在我可以很容易地得到当前兄弟的列表,可以得到当前的孩子,它在树中的位置,没问题,我甚至可以通过分离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 个答案:

答案 0 :(得分:1)

您可以使用get_children

我通常在functions.php中添加一个函数,用于按照正确的顺序进行无意识检索,如

function get_kids($id) {
  get_children('post_parent='.$id.'&order=ASC&orderby=menu_order&post_status=publish')
}