2017-06-21 74 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並沒有輸出。 –

相關問題