web-dev-qa-db-fra.com

Obtenir le nombre de publications de la boucle en cours lors de l'utilisation de plusieurs requêtes sur une page

J'essaie d'obtenir un décompte des publications actuelles dans une boucle. J'utilise plusieurs boucles sur une 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 numéro de tous les articles de mon site WP. Cela pourrait-il avoir quelque chose à voir avec l'utilisation de plusieurs requêtes sur une page? J'ai essayé d'utiliser wp_reset_query après chaque boucle pour m'assurer de ne pas jeter les choses de cette façon. Qu'est-ce que je fais mal?

10
pwbred

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

Si vous utilisez un nouvel objet WP_Query, votre variable qui le contient aura le nombre suivant:

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

Si vous utilisez get_posts(), l'objet WP_Query n'est pas accessible et vous devez simplement compter le nombre retourné:

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

Je pense que post_count est stocké dans le global. Avant la boucle personnalisée, vous devez donc le définir sur 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 poster?

J'utilise une autre manière dans la boucle qui compte les publications à l'aide de 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;?>
4
Wyck

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
Amritosh pandey

Moyen simple de compter le total des messages, pagination comprise

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