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

Rad*_*dek 5 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>';
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ook 11

解决这个问题的方法是在循环完成单独的WP_Query实例后调用wp_reset_postdata.

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


mar*_*dge 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; ?>
Run Code Online (Sandbox Code Playgroud)

  • 这不会解决他遇到的问题 - `$my_query-&gt;the_post();` 修改全局 `$post` 变量,使其附加到他的新查询。 (2认同)