問題描述

我試圖得到一個循環中當前帖子的數量。我在主題中的一個頁面上使用了多個循環。到目前為止我有:

$my_post_count = $wp_query->post_count;

但是當我打印 $ my_post_count 時,它將返回 WP 站點上的所有帖子的數量。它可以與在一個頁面上使用多個查詢有關嗎?我試過在每個循環之後使用 wp_reset_query,以確保我沒有這樣扔東西。我究竟做錯了什麼?

最佳解決方案

$wp_query 保存頁面的主循環,不應用於創建多個循環。

如果您正在使用新的 WP_Query 對象,那麼保存它的變量將具有以下數值:

$my_query = new WP_Query();
// stuff
$count = $my_query->post_count;

如果您使用的是 get_posts(),那麼 WP_Query 對象是不可訪問的,您應該只返回一組:

$posts = get_posts();
$count = count($posts);

次佳解決方案

我相信 post_count 存儲在全局中,所以在自定義循環之前,您應該將其設置為 0,因為您可以在循環之外使用它,但這取決於您如何構造多個查詢,也許您可​​以將它們添加到張貼?

例如,在循環中使用 current_post + 1 來計算帖子的另一種方法。

<?php $my_query = new WP_Query();?>
     <?php if ($my_query->have_posts()) :while ($my_query->have_posts()) : $my_query->the_post();

           $count_posts = $my_query->current_post + 1; //counts posts in loop

     endwhile;?>

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。