2013-10-24 61 views
1

在我父頁面,我有一個自定義頁面模板調用另一個模板:WordPress的循環

if(have_posts()): while(have_posts()): the_post(); ?> 

<div class="wrapper"> 


<?php get_template_part('template', 'page-section'); ?> 

<?php endwhile; endif; wp_reset_postdata(); ?> 

內模板頁面section.php,我有以下幾點:

<?php 
/* 
Template Name: Page Section 
*/ 
$args = array(
    'post_parent' => 9, 
    'post_type' => 'page', 
    'orderby' => 'menu_order', 
    'posts_per_page' => -1, 
    'order' => 'ASC' 
); 

$wpq = new WP_Query($args); ?> 

<?php while ($wpq->have_posts()) : $wpq->the_post(); ?> 

<?php if ($post->ID == 101) { 
    include('template-slider.php'); 
} ?> 

<div class="page-section"> 
    <h1><?php the_title(); ?></h1> 
    <?php /* The loop */ ?> 
     <?php the_content(); ?> 
</div> 

<?php endwhile; wp_reset_postdata();?> 

在模板-slider.php,如下:

<div id="slider-container"> 
    <ul id="slider"> 
     <? $query = get_pages( 
      array(
       'post_type' => 'slides', 
       'orderby' => 'menu_order', 
       'posts_per_page' => -1 
      )); 


      foreach($query as $post) { 
      setup_postdata($post); ?> 
      <?php $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'single-post-thumbnail', $thumbsize[0]); ?> 

      <li> 
      <img src="<?php echo $image[0]; ?>"> 
      </li> 
      <?php } wp_reset_postdata(); ?> 

     </ul> 
    </div>  

的問題是,一旦WordPress的命中內環路滑塊模板,它對於帖子內容迴應的信息不是父母的子帖子,而是父母的內容。

誰能告訴我我做錯了什麼?我無法弄清楚!

+0

在'template-slider.php'文件中,您不需要包含'setup_postdata($ post);'行,因爲'get_pages()'將在數組中包含帖子ID。此外,您可能希望重新命名'$ post',因爲它是全局WP使用的;不知道這裏是否有問題。 – Indranil

回答

1

這只是一個未經考驗的猜測,但嘗試以下方法:

模板的頁面,section.php

$wpq = get_posts($args); 
if($wpq) { 
    foreach($wpq as $p) 
    { 
     if ($p->ID == 101) { 
      include('template-slider.php'); 
     } 
     ?> 
      <div class="page-section"> 
       <h1><?php echo $p->post_title; ?></h1> 
       <?php echo $p->post_content; ?> 
      </div> 
     <?php 
    } 
} 

模板slider.php

<div id="slider-container"> 
    <ul id="slider"> 
     <?php 
     $query_pages = get_pages( 
      array(
       'post_type' => 'slides', 
       'orderby' => 'menu_order', 
       'posts_per_page' => -1 
     )); 
     if($query_pages) 
     { 
      foreach($query_pages as $pg) { 
       $image = wp_get_attachment_image_src(get_post_thumbnail_id($pg->ID), 'single-post-thumbnail', $thumbsize[0]); ?> 
       <li> 
       <img src="<?php echo $image[0]; ?>"> 
       </li><?php 
      } 
     } ?> 
    </ul> 
</div> 

參考:When should you use WP_Query vs query_posts() vs get_posts()?

+0

非常感謝@brasofilo!此外,我很欣賞鏈接來解釋你的答案! – TechyDude

+1

嗯,簡單地傾銷一個正確的代碼並沒有很好的答案,真的很高興它在黃金時間:) – brasofilo