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?

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

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

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

0

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

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.