2014-03-19 59 views
0
顯示其子女作爲獨立的div

現在我有以下的PHP:如何獲得每個父頁面,並在WordPress的

<?php 
$pages = get_pages(array('sort_column'=>'menu_order', 'parent'=>'0')); 
    foreach ($pages as $page_data) { 
     $content = apply_filters('the_content', $page_data->post_content); 
     $title = $page_data->post_title; 
     $slug = $page_data->post_name; 
     $pageid=$page_data->ID; 

     echo '<div class="section'.(($title=='intro')?' intro-section':"").'">'; 
     echo $content; 
     echo "</div>"; 
    } 
?> 

有5頁,其中2個有許多子頁面。我希望將上面的代碼進一步提升一級,以便每個頁面都有自己的包裝,並且如果頁面包含子頁面,那麼這些頁面將放置在相同的.section內,但每個頁面都在單獨的div內。有什麼建議?我在Wordpress方面有點缺乏經驗,所以任何幫助都會很棒。下面應該舉一個我想要的例子:

<div class="section"> 
    <div class="page parent"></div> 
</div> 
<div class="section"> 
    <div class="page parent"></div> 
    <div class="page child"></div> 
    <div class="page child"></div> 
</div> 
<div class="section"> 
    <div class="page parent"></div> 
</div> 

下面是我正在使用的代碼。

<?php while (have_posts()) : the_post(); ?> 
<?php 
$pages = get_pages(array('sort_column'=>'menu_order', 'parent'=>'0')); 
    foreach ($pages as $page_data) { 
     $content = apply_filters('the_content', $page_data->post_content); 
     $title = $page_data->post_title; 
     $slug = $page_data->post_name; 
     $pageid=$page_data->ID; 

     //Put a container around every page's content 
     if (count(get_pages('child_of=' . $page_data->ID.''))) { 
      // Loop through $page_data array to print the div you want 
     echo '<div class="section">'; 
     echo '<div class="slide">'; 
     echo $content; 
     echo "</div>"; 

     $children = get_pages('child_of=' . $page_data->ID.''); 
     foreach($children as $child) { 
     $childcontent = apply_filters('the_content', $child->post_content); 
     echo '<div class="slide">'; 
     echo $childcontent; 
     echo "</div>"; 
     } 
     echo "</div><!--end section-->"; 
     } else { 

     echo '<div class="section'.(($title=='intro')?' intro-section':"").'">'; 
     echo $content; 
     echo "</div>"; 
    } 
    } 
?> 
<?php endwhile ?> 

回答

3

使用child_of參數循環內get_pages()功能。此參數僅列出單個頁面的子頁面。它使用ID作爲值作爲頁面。

例如,

if (count(get_pages('child_of=' . $page_data->ID))) { 
    // Loop through $page_data array to print the div you want 
} 
+0

我試圖補充說,但我得到了一個'意外的'{'錯誤。 更新上面的帖子,以反映我有什麼。 – steve

+0

我錯過了一個右括號。更新了代碼。請現在嘗試 –

+0

嗯,我只是想通了! 好的,所以它檢測到它有子頁面,但它們沒有打印(即,父頁面用'div.slide'包裝,但沒有其他子頁面)。我要在'if'裏面做一個新的'while',來獲取每個子頁面嗎?我不知道該怎麼做。 – steve

相關問題