wp_nav_menu()显示当前页面及其子项的深度= 1

时间:2017-06-21 09:41:05

标签: wordpress

这就是我想要做的。假设我有一个看起来像这样的菜单:

<ul>
<li><a href="#">Page #1</a>
<ul>
<li><a href="#">Sub-Page #1</a>
<ul>
<li><a href="#">Sub-Sub-Page #1</a></li>
<li><a href="#">Sub-Sub-Page #2</a></li>
</ul>
</li>
<li><a href="#">Sub-Page #2</a></li>
<li><a href="#">Sub-Page #3</a></li>
</ul>
</li>
<li><a href="#">Page #2</a></li>
<li><a href="#">Page #3</a></li>
</ul>

我想要做的是使用wp_nav_menu仅显示用户当前正在查看的页面及其子项,例如,如果有人在子页面#1或其子项目(子子页面)上#1或#2)生成的菜单应如下所示:

<ul>
<li><a href="#">Sub-Page #1</a>
<ul>
<li><a href="#">Sub-Sub-Page #1</a></li>
<li><a href="#">Sub-Sub-Page #2</a></li>
</ul>
</li>
</ul>

如果用户当前在页面#1上,则生成的菜单应如下所示:

<ul>
<li><a href="#">Page #1</a>
<ul>
<li><a href="#">Sub-Page #1</a></li>
<li><a href="#">Sub-Page #2</a></li>
<li><a href="#">Sub-Page #3</a></li>
</ul>
</li>
</ul> 

是否有可能通过wp_nav_menu或其他任何方式实现这样的事情?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你可以通过“get_posts”来实现这样的目标。只需在查询参数中传递参数“post_parent”,您将获得所有子页面。

https://codex.wordpress.org/Template_Tags/get_posts

<ul>
  <?php global $post;
  $args = array( 'posts_per_page' => -1, 'post_parent'=> get_the_ID() );  
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
<li>
    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach;  ?>
</ul>

你可以通过wp_query获得相同的目标。 https://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters