2013-10-24 3 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() 'будет включать идентификатор сообщения в массив. Кроме того, вы можете захотеть переименовать '$ 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

Смежные вопросы