2010-05-16 94 views
4

波纹管功能工作正常,但我需要在循环内运行它。如果这样做,帖子内容实际上是从我的WP_Query的最后一篇文章中获取的。不是来自应该出现的那个。我可以在循环内运行新的WP_Query而不影响循环吗? (wordpress)

是否有任何方式来运行我的查询,并离开循环不受影响

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>'; 
} 

回答

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; ?> 
+0

我不错过任何标签。我的代码没有错误地工作 – Radek 2010-05-16 20:00:43

+0

为什么你在一个函数中使用新的查询?你需要这样做吗? – markratledge 2010-05-17 13:43:15

+0

你确定它不会影响我已经运行的循环吗?如果是的话,那么我很幸运,因为我需要这样做。 – Aayush 2010-08-22 11:56:35

10

的定为这是调用wp_reset_postdata大功告成通过您分开WP_Query实例循环之后。

由于WordPress使用全球$post变量,所以无论何时在任何WP_Query对象上调用the_post()时都会显示该问题。当你从Radek的2个帖子查询中调用它时,它会丢失原始WP_Query对象的轨迹。