2014-10-03 83 views
1

我遇到了一個問題,這是很煩人的。 問題是我在頁腳中有兩個循環,它們加載了來自兩個不同類別的最後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

你有什麼想法爲什麼會發生這些傢伙?

回答

1

你有幾個問題在這裏

  • 您需要重置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

0

嘗試使用setup_postdata($ post);以提供所有與崗位相關的數據。您需要:

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

setup_postdata()