Почему этот запрос не работает, когда присутствует другой?


Это сводит меня с ума, я уверен, что это что-то глупое, но я слишком обожжен и не могу найти это. Я создаю пользовательскую тему WP, в которой есть 2 ползунка, один из которых является слайдером начальной загрузки по умолчанию, а другой - слайдером Owl. Прежде чем вы скажете мне "почему бы вам не использовать 2 экземпляра слайдера Owl?", я уже подумал об этом, протестировал и работает. Однако мне очень любопытно, почему это не работает. Вот мой код:

Карусель ДЛЯ ЗАГРУЗКИ:

<section id="panel4">
  <div class="container">
    <h2>Testimonials</h2>
  </div>
  <!-- container -->
  <div class="container-fluid">
    <?php $queryObject=new WP_Query( 'post_type=testimonial' ); // The Loop! if ($queryObject->have_posts()) { ?>
    <div id="carousel-testimonial" class="carousel slide" data-ride="carousel">
      <!-- Wrapper for slides -->
      <div class="carousel-inner" role="listbox">
        <?php while ($queryObject->have_posts()) {$queryObject->the_post(); ?>
        <div class="item ">
          <div class="container">
            <div class="row">
              <div class="col-sm-3 col-md-2 thumb-box">
                <img class="thumb" src="<?php echo types_render_field( " testimonial-avatar ", array( url => "true ", "width " => "400 ", "height " => "300 ", "proportional " => "true " ) );?>">
              </div>
              <div class="col-sm-9 col-md-10">
                <h3>"<?php echo types_render_field("testimonial-excerpt", array("argument1"=>"value1","argument2"=>"value2","argument2"=>"value2"));    ?>"</h3>

                <blockquote>
                  <?php echo types_render_field( "testimonial-text", array( "argument1"=>"value1","argument2"=>"value2","argument2"=>"value2")); ?></blockquote>
                <p class="sig">
                  <?php echo types_render_field( "testimonial-name", array( "argument1"=>"value1","argument2"=>"value2","argument2"=>"value2")); ?></p>
              </div>
            </div>
          </div>
        </div>
        <?php } ?>
      </div>
      <?php } ?>
      <!-- Controls -->
      <a class="left carousel-control" href="#carousel-testimonial" role="button" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="right carousel-control" href="#carousel-testimonial" role="button" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>

    </div>
    <!-- .carousel -->
  </div>
  <!-- .container -->
</section>

А потом СОВА СЛАЙДЕР

<?php if( have_rows( 'slider_photos') ): ?>

<div class="container-fluid">
  <div id="happy" class="owl-carousel">

    <?php while( have_rows( 'slider_photos') ): the_row(); // vars $image=g et_sub_field( 'slider_image'); ?>
    <div class="item-owl">
      <img class="img-responsive" src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt'] ?>" />
    </div>

    <?php endwhile; ?>

  </div>
  <!-- .carousel -->
</div>

<?php endif; ?>

Теперь проблема, похоже, в начальной загрузке. Если я сниму его, ползунок Совы сработает. Если я добавлю 2 экземпляра слайдера Owl, это сработает. Если я добавлю карусель начальной загрузки, будет работать только начальная загрузка, а Owl ничего не отображает (даже в коде, как будто его даже не существовало)

Может ли кто-нибудь сказать мне, что происходит и как это исправить?

Author: Jay Blanchard, 2015-07-28

1 answers

Скорее всего, вам нужно вызвать wp_reset_postdata() перед have_rows( 'slider_photos') в слайдере Owl, чтобы восстановить глобальный объект $post, который вы переопределяете в своем цикле карусели начальной загрузки .

have_rows('slider_photos') зависит от глобального объекта $post.

Другим вариантом было бы использовать have_rows( 'slider_photos', $post_id ), чтобы указать, что $post_id вы хотите использовать.

 1
Author: birgire, 2015-07-29 00:15:06