如何获取每个父页面,并在Wordpress中将其子项显示为单独的div

时间:2014-03-19 07:13:33

标签: php wordpress

现在我有以下PHP:

<?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内。 {1}}。有什么建议?我在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 ?>

1 个答案:

答案 0 :(得分:3)

在循环内使用child_of函数的get_pages()参数。此参数仅列出单个页面的子页面。它使用ID作为页面的值。

EG。

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