[英]Multiple loops with same WP_Query in WordPress
我有一個相同的WP_Query有兩個循環,我嘗試放置wp_reset_postdata();
無論是右后endwhile;
在每個循環中,或者在所有循環中都只有一次(如下所示),兩者似乎都在工作。
正確的做法是什么,為什么?
<?php
$q = new WP_Query((array(
'cat' => 1,
'posts_per_page' => -1
)));
if ($q->have_posts()) :
while ($q->have_posts()) : $q->the_post();
// first loop
endwhile;
endif;
if ($q->have_posts()) :
while ($q->have_posts()) : $q->the_post();
// second loop
endwhile;
endif;
wp_reset_postdata(); // should reset be here or after endwhile; in each loop?
?>
當WP_Query::have_posts()
並確定沒有更多的帖子時,它將自動倒回該查詢的結果指針以從頭開始。 您可以在此處查看相關代碼, 在此處部分復制:
} elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) {
/* Some code removed here for the sake of brevity */
// Do some cleaning up after the loop
$this->rewind_posts();
}
從文檔中的示例代碼來看,似乎只在處理多個查詢時才需要調用wp_reset_postdata()
,但是我對WordPress的了解並不足夠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.