Получить количество записей текущего цикла при использовании нескольких запросов на одной странице

10

Я пытаюсь получить количество текущих сообщений в цикле. Я использую несколько циклов на одной странице в моей теме. Пока что у меня есть:

$my_post_count = $wp_query->post_count;

Но когда я печатаю $ my_post_count, он возвращает номер всех сообщений на моем WP-сайте. Может ли это быть связано с использованием нескольких запросов на одной странице? Я пытался использовать wp_reset_query после каждого цикла, чтобы убедиться, что я не выбрасываю вещи таким образом. Что я делаю неправильно?

pwbred
источник

Ответы:

29

$wp_query держать основной цикл страницы и не должен использоваться для создания нескольких циклов.

Если вы используете новый WP_Queryобъект, то ваша переменная, которая содержит его, будет иметь следующее количество:

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

Если вы используете , get_posts()то WP_Queryобъект не доступен , и вы должны просто посчитать возвращаемый набор:

$posts = get_posts();
$count = count($posts);
Rarst
источник
Примечание: если вы находитесь в основном цикле, вы можете получить доступ WP_Queryчерезglobal $wp_query
mrmadhat
5

Я считаю, что post_count хранится в глобальном, поэтому перед пользовательским циклом вы должны установить его 0, так как вы можете использовать его вне цикла, но это зависит от того, как вы структурируете несколько запросов, возможно, вы можете добавить их в свой пост ?

Есть другой способ, который я использую в цикле current_post + 1, например, для подсчета сообщений .

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

Альтернативное решение, использующее WP_Query:

           <?php 
               $args = array(
               'post_type' => 'post'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; 
            ?> 
Амритош Пандей
источник
0

Простой способ подсчитать общее количество постов, включая разбиение на страницы

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Суреш Сутар
источник