0

我一直在研究一个查询,该查询将显示孙子页面的 ul 列表以及每个子页面的另一个 ul 列表。我认为它会深入 3 和 4 级?就页面而言,我现在拥有的是:

家长

  • 孩子 1

——孙子1

---孙子1子1

——孙子2

---孙子 2 孩子 1

  • 孩子 2

——孙子1

---孙子1子1

——孙子2

---孙子 2 孩子 1

  • 孩子 3

——孙子1

---孙子1子1

——孙子2

---孙子 2 孩子 1

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

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

4

2 回答 2

0

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

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

一些代码我很幸运http://www.ordinarycoder.com/wordpress-wp_nav_menu-show-a-submenu-only/

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

于 2013-05-17T20:38:16.320 回答
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 是否使用相同的模板,例如 template-green,都会根据列出的父页面显示正确的导航菜单。此外,如果您在子页面或该子页面中的子页面上,则无论所选导航菜单显示多深。相同的代码将用于多个模板,例如 template-blue、template-red 等。

于 2013-05-21T02:01:51.390 回答