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


10

Sto cercando di ottenere un conteggio dei post correnti all'interno di un loop. Sto usando più loop su una pagina del 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 sito WP. Potrebbe avere qualcosa a che fare con l'uso di più query su una pagina? Ho provato a usare wp_reset_query dopo ogni ciclo per assicurarmi di non buttare via le cose in quel modo. Che cosa sto facendo di sbagliato?

Risposte:


29

$wp_query mantenere il ciclo principale della pagina e non deve essere utilizzato per creare più cicli.

Se si utilizza un nuovo WP_Queryoggetto, la variabile che lo contiene avrà il conteggio corrispondente:

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

Se stai usando, get_posts()allora l' WP_Queryoggetto non è accessibile e dovresti semplicemente contare il set restituito:

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

Nota: se sei nel loop principale, puoi accedere WP_Queryaglobal $wp_query
mrmadhat il

5

Credo che post_count sia archiviato nel globale, quindi prima del ciclo personalizzato dovresti impostarlo 0, poiché puoi usarlo al di fuori del ciclo, ma questo dipende da come stai strutturando le tue query multiple, forse puoi aggiungerle al tuo post ?

C'è un altro modo che uso nel ciclo che conta i post usando current_post + 1, ad 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;?>

2

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

Modo semplice per contare la posta totale compresa la paginazione

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.