2016-02-24 45 views
0

我正在使用foreach循環來列出父頁面上的子頁面,這很好。但是,子頁面不會列在子頁面上,這正是我想要的。使用foreach循環的子頁面上的WordPress的列表子頁面

下面是父頁面什麼工作至今:

<?php 

$nav = array(
    'post_type' => 'page', 
    'orderby' => 'title', 
    'order' => 'ASC', 
    'post_parent' => $post->ID 
); 

$child_pages = get_posts($nav); 

?> 
<ul> 
    <?php foreach ($child_pages as $child_page) : ?> 
     <li> 
      <a href="<?=get_permalink($child_page->ID); ?>"><?=$child_page->post_title; ?></a> 
     </li> 
    <?php endforeach; ?> 
</ul> 

理想情況下,我想使用的foreach,而不是任何其他環路保持。我想知道是否需要在現有循環中添加另一個循環,但我不確定如何繼續。

任何幫助將不勝感激。

回答

1

什麼,你可以在這裏做的是檢查,如果當前頁面使用wp_get_post_parent_id子頁面 - 見http://codex.wordpress.org/Function_Reference/wp_get_post_parent_id然後如果頁面是子頁面 - 使用父ID,否則只使用帖子ID。像這樣的東西應該工作:

global $post; 
if(wp_get_post_parent_id($post->ID)) 
{ 
    $nav = array(
     'post_type' => 'page', 
     'orderby' => 'title', 
     'order' => 'ASC', 
     'post_parent' => wp_get_post_parent_id($post->ID) 
    ); 
} 
else{ 
    $nav = array(
    'post_type' => 'page', 
    'orderby' => 'title', 
    'order' => 'ASC', 
    'post_parent' => $post->ID 
    ); 
} 
$child_pages = get_posts($nav); 
+0

這是一種享受。謝謝! –

0

使用父,而不是post_parent

<?php 

    $nav = array(
     'post_type' => 'page', 
     'orderby' => 'title', 
     'order' => 'ASC', 
     'child_of' => $post->ID 
    ); 

    $child_pages = get_posts($nav); 

    ?> 
    <ul> 
     <?php foreach ($child_pages as $child_page) : ?> 
      <li> 
       <a href="<?=get_permalink($child_page->ID); ?>"><?=$child_page->post_title; ?></a> 
      </li> 
     <?php endforeach; ?> 
    </ul> 

希望它有助於

+0

嘿 - 不幸的是,不給我只是該父母的子頁面。這給了我所有頁面的列表。不過謝謝。 –

+0

我已將父母更改爲child_of,如果有幫助,請嘗試 – Yamu

相關問題