it-swarm.dev

Ottieni il conteggio dei post del loop corrente quando usi più query su una pagina

Sto cercando di ottenere un conteggio dei post correnti all'interno di un ciclo. Sto usando loop multipli su una pagina nel mio tema. Finora ho:

$my_post_count = $wp_query->post_count;

Ma quando stampo $ my_post_count, restituisce il numero di tutti i post sul mio WP sito. Potrebbe avere qualcosa a che fare con l'utilizzo di più query su una pagina? Ho provato ad usare wp_reset_query dopo ogni ciclo per assicurarmi che non stavo buttando via le cose in quel modo. Che cosa sto facendo di sbagliato?

10
pwbred

$wp_query mantiene il loop loop principale della pagina e non deve essere utilizzato per creare loop multipli.

Se stai usando un nuovo oggetto WP_Query, la tua variabile che la detiene avrà il conteggio in proporzione:

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

Se stai usando get_posts() allora l'oggetto WP_Query non è accessibile e devi semplicemente contare il set restituito:

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

Credo che il post_count sia memorizzato nel globale, quindi prima del ciclo personalizzato dovresti impostarlo su 0, dato che puoi usarlo al di fuori del ciclo, ma questo dipende da come stai strutturando le tue query multiple, forse puoi aggiungerle al tuo inviare?

C'è un altro modo che uso all'interno del ciclo che conta i post usando current_post + 1, per esempio.

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

Una soluzione alternativa che utilizza WP_Query sarebbe:

           <?php 
               $args = array(
               'post_type' => 'post'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; 
            ?> 
0
Amritosh pandey