这就是我想要做的。假设我有一个如下所示的菜单:
<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或任何其他方式实现这样的事情?任何帮助都将不胜感激。
发布于 2017-06-21 17:56:38
你可以通过"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
https://stackoverflow.com/questions/44672422
复制相似问题