我可以在循环中运行新的WP_Query而不影响循环吗? (WordPress的)

时间:2010-05-16 05:28:24

标签: wordpress

波纹管功能工作正常,但我需要在循环内运行它。如果这样做,帖子内容实际上取自我的WP_Query的最后一篇文章。不是应该出现的那个。

有没有办法运行我的查询并让 The Loop不受影响

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 个答案:

答案 0 :(得分:11)

对此的修复是在循环完成单独的WP_Query实例后调用wp_reset_postdata

问题出现了,因为WordPress使用全局$post变量,只要在任何WP_Query对象上调用the_post(),就会设置该变量。当您从2-posts-from-Radek查询中调用它时,它将丢失对原始WP_Query对象的跟踪。

答案 1 :(得分:0)

在函数中包含新查询时,是否遗漏了一些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; ?>