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?

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);

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;?>

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; 
            ?> 

0

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

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.