如何查询孙子和Wordpress中的子子

时间:2013-05-17 19:52:12

标签: wordpress

我一直在研究一个查询,它会显示多个孙子页面的列表,并且每个页面都会显示另一个子页面。我认为这将是3& 4级深吗?就页面而言,我现在所拥有的是:

  • 儿童1

- 孙子1

---孙子1孩子1

- 孙子2

---孙子2孩子1

  • Child 2

- 孙子1

---孙子1孩子1

- 孙子2

---孙子2孩子1

  • 儿童3

- 孙子1

---孙子1孩子1

- 孙子2

---孙子2孩子1

然后基本上当你在一个孩子,孙子或granchild孩子时,它会显示一个孩子的所有页面/链接的菜单列表(但不是菜单中的孩子本身)。

我发现父母和孩子有多少东西,甚至是孙子的东西,但除了孙子之外什么都没有用?关于如何实现这一目标的任何想法或参考?

2 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点:

首先最简单,只需用CSS隐藏顶层菜单,只显示选中的菜单。

我自己有点运气http://www.ordinarycoder.com/wordpress-wp_nav_menu-show-a-submenu-only/

如果你能在这里找到任何有用的东西,那就有一个重复的问题:WordPress wp_nav_menu specific sub menu only

答案 1 :(得分:0)

尝试以下参考资料后我没有运气:http://codex.wordpress.org/Function_Reference/wp_list_pages#List_Sub-Pages

我从另一个资源中找到的壁橱里的东西依赖于页面ID:

<?php 
$parent = 64;
$args=array(
 'child_of' => $parent
);
$pages = get_pages($args);  
if ($pages) {
  $pageids = array();
  foreach ($pages as $page) {
  $pageids[]= $page->ID;
}
wp_list_pages($args);
}
?>

虽然它会起作用,但我使用的模板可能会在不同的页面中使用。因此,如果孙子或其中一个孩子是显示的页面,我需要显示孙子父母的整个列表(或实际上是孩子1,孩子2或孩子3)。

经过多次尝试,我终于明白了。我确实回去并决定制作导航菜单,并使用if这样的语句,我希望导航菜单出现。

<?php
   if ( is_page( 'child-1' ) || in_array( 3, get_post_ancestors($post->ID) ) ) {    
     menu2_nav();
   } elseif ( is_page( 'child-2' ) || in_array( 4, get_post_ancestors($post->ID) ) ) {  
     menu3_nav();
   } else { 
   }    
 ?>

因此,无论子1或子2使用相同的模板,示例模板 - 绿色,都会显示正确的导航菜单,具体取决于列出的父页面。此外,如果您在子页面或该子项内的子页面,无论所选导航菜单显示多深。相同的代码将用于多个模板,如模板蓝色,模板红色等。