Obtenir le nombre de messages de la boucle actuelle lors de l'utilisation de plusieurs requêtes sur une seule page

10

J'essaie d'obtenir un décompte des messages actuels à l'intérieur d'une boucle. J'utilise plusieurs boucles sur une seule page de mon thème. Jusqu'à présent, j'ai:

$my_post_count = $wp_query->post_count;

Mais lorsque j'imprime $ my_post_count, il renvoie le nombre de tous les messages sur mon site WP. Cela pourrait-il avoir quelque chose à voir avec l'utilisation de plusieurs requêtes sur une seule page? J'ai essayé d'utiliser wp_reset_query après chaque boucle pour m'assurer que je ne jetais pas les choses de cette façon. Qu'est-ce que je fais mal?

pwbred
la source

Réponses:

29

$wp_query tenir la boucle principale de la page et ne doit pas être utilisé pour créer plusieurs boucles.

Si vous utilisez un nouvel WP_Queryobjet, la variable qui le contient aura le nombre suivant:

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

Si vous utilisez get_posts()alors l' WP_Queryobjet n'est pas accessible et vous devez simplement compter l'ensemble renvoyé:

$posts = get_posts();
$count = count($posts);
Rarst
la source
Remarque: Si vous êtes dans la boucle principale, vous pouvez accéder à WP_Querytraversglobal $wp_query
mrmadhat
5

Je crois que le post_count est stocké dans le global, donc avant la boucle personnalisée, vous devez le définir 0, car vous pouvez l'utiliser en dehors de la boucle, mais cela dépend de la façon dont vous structurez vos requêtes multiples, vous pouvez peut-être les ajouter à votre post ?

Il y a une autre façon que j'utilise dans la boucle qui compte les publications en utilisant current_post + 1, par exemple.

<?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
la source
2

Une solution alternative utilisant WP_Query serait:

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

Un moyen simple de compter le nombre total de messages, y compris la pagination

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Suresh Suthar
la source