Uzyskaj liczbę postów bieżącej pętli, gdy używasz wielu zapytań na jednej stronie

10

Próbuję uzyskać liczbę bieżących postów w pętli. Używam wielu pętli na jednej stronie w moim motywie. Do tej pory mam:

$my_post_count = $wp_query->post_count;

Ale kiedy drukuję $ my_post_count, zwraca liczbę wszystkich postów na mojej stronie WP. Czy może mieć to coś wspólnego z użyciem wielu zapytań na jednej stronie? Próbowałem użyć wp_reset_query po każdej pętli, aby upewnić się, że nie wyrzucam rzeczy w ten sposób. Co ja robię źle?

pwbred
źródło

Odpowiedzi:

29

$wp_query przytrzymaj główną pętlę strony i nie należy jej używać do tworzenia wielu pętli.

Jeśli używasz nowego WP_Queryobiektu, twoja zmienna, która go przechowuje, będzie miała odpowiednią liczbę:

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

Jeśli używasz get_posts()wtedy WP_Queryobiekt nie jest dostępny i należy po prostu liczyć zwrócony zestaw:

$posts = get_posts();
$count = count($posts);
Rarst
źródło
Uwaga: jeśli jesteś w głównej pętli, możesz uzyskać dostęp WP_Queryprzezglobal $wp_query
mrmadhat,
5

Wierzę, że post_count jest przechowywany w globalnym, więc przed niestandardową pętlą powinieneś go ustawić 0, ponieważ możesz go używać poza pętlą, ale zależy to od tego, jak tworzysz strukturę wielu zapytań, być może możesz dodać je do swojego postu ?

Jest inny sposób, którego używam w pętli current_post + 1, na przykład zliczanie postów .

<?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;?>
Wyck
źródło
2

Alternatywnym rozwiązaniem wykorzystującym WP_Query byłoby:

           <?php 
               $args = array(
               'post_type' => 'post'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; 
            ?> 
Amritosh Pandey
źródło
0

Prosty sposób na policzenie całkowitej liczby postów łącznie z pagignacją

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Suresh Suthar
źródło