2017-06-21 43 views
2

这是我正在尝试做的。比方说,我有一个看起来像这样的菜单:wp_nav_menu()显示当前页面及其深度= 1的子项目

<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

你可以通过“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

+0

不幸的是,上面的解决方案不会为我返回任何输出 - 换句话说什么都不会显示。我会研究WP_Query,谢谢。 –

+0

你有传递当前页面id到post_parent参数吗? –

+0

是的,我通过$ post-> ID并没有输出。 –

相关问题