я могу запустить новый WP_Query внутри цикла без каких-либо последствий для цикла? (WordPress) - PullRequest
5 голосов
/ 16 мая 2010

сильфонная функция работает нормально, но мне нужно запустить ее внутри цикла. Если это так, то содержание сообщения фактически взято из последнего сообщения моего WP_Query. Не из того, который должен появиться.

Есть ли способ запустить мой запрос и оставить Цикл неизменным ?

function recent_post_by_author() {
  echo '<div class="recent_post_by_author">';
  $my_query = new WP_Query('author_name=Radek&showposts=2');
  while ($my_query->have_posts()) : $my_query->the_post(); ?>
  <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> <?php the_title(); ?></a><BR>
  <?php endwhile;
  echo '</div>';
}

Ответы [ 2 ]

11 голосов
/ 25 февраля 2012

Исправление для этого заключается в вызове wp_reset_postdata после того, как вы закончите цикл через отдельный экземпляр WP_Query.

Проблема обнаруживается, потому что WordPress использует глобальную переменную $post, которая устанавливается всякий раз, когда выполняется вызов the_post() для любого объекта WP_Query. Когда вы вызываете его из запроса 2-posts-from-Radek, он теряет исходный объект WP_Query.

0 голосов
/ 16 мая 2010

Вам не хватает некоторых открывающих и закрывающих тегов php при включении нового запроса в функцию? Это работает как отдельный новый цикл запросов, который можно использовать несколько раз внутри основного цикла WP:

<?php $my_query = new WP_Query('author_name=Radek&showposts=2'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<?php the_title(); ?></a>
<?php endwhile; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...