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?
$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);
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;?>
Une solution alternative utilisant WP_Query serait:
<?php
$args = array(
'post_type' => 'post'
);
$the_query = new WP_Query( $args );
$totalpost = $the_query->found_posts;
?>
Moyen simple de compter le total des messages, pagination comprise
<?php global $wp_query
echo $wp_query->found_posts; ?>