WordPress的 - 帖子中显示的帖子有相同的the_excerpt()输出

问题描述:

我遇到了一个问题,这是很烦人的。 问题是我在页脚中有两个循环,它们加载了来自两个不同类别的最后3个帖子。它看起来像:WordPress的 - 帖子中显示的帖子有相同的the_excerpt()输出

<?php $posts = get_posts('category=21&orderby=desc&numberposts=3'); foreach($posts as $post) { ?> 
    <div class="footer-text-block"> 
     <a href="<?php the_permalink() ?>" target="_parent"> 
      <span class="footer-white-bold"><?php the_title(); ?></span> 
     </a><br /> 
     <span class="footer-grey-thick"><?php the_excerpt(); ?></span> 
    </div> 
<?php } ?> 
<?php $posts = get_posts('category=22&orderby=desc&numberposts=3'); 
     foreach($posts as $post) { ?> 
    <div class="footer-text-block"> 
     <a href="<?php the_permalink() ?>" target="_parent"> 
      <span class="footer-white-bold"><?php the_title(); ?></span> 
     </a><br /> 
     <span class="footer-grey-thick"><?php the_excerpt(); ?></span> 
    </div> 
<?php } ?> 

以及它的输出是: http://i.stack.imgur.com/5C58t.png

而这在其上显示的页脚我的帖子的内容: http://i.stack.imgur.com/R6ok7.png

你有什么想法为什么会发生这些家伙?

你有几个问题在这里

  • 您需要重置POSTDATA 自定义查询,这是后的每实例后get_posts()。您可以将您foreach循环

  • 的每结束后只需添加wp_reset_postdata();你有一对夫妇使用相同$postforeach循环。你必须记住,最后一个值存在外部你的foreach循环,如果它没有被破坏,如果它具有相同的名称,它将影响下一个循环中的值foreach。您可以将该值重命名为每个foreach循环的唯一值,也可以在foreach循环之后/之外使用unset($post)

  • 您需要先设置postdata,然后才能使用模板标签,如the_excerpt()the_title()。只需在您开始后添加setup_postdata($post);foreach循环

+0

谢谢!这解决了我的问题! – 2014-10-03 12:32:58

+0

我的荣幸。请享用 :-) – 2014-10-03 12:33:40

尝试使用setup_postdata($ post);以提供所有与岗位相关的数据。您需要:

foreach($posts as $post) { 
    setup_postdata($post); 
    // the rest of your code 
} 

setup_postdata()