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

16 окт. 2011 г., 21:17:01
Просмотры: 116K
Голосов: 16

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

$my_post_count = $wp_query->post_count;

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

0
Все ответы на вопрос 4
1
38

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

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

$my_query = new WP_Query();
// действия
$count = $my_query->post_count;

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

$posts = get_posts();
$count = count($posts);
17 окт. 2011 г. 00:02:28
Комментарии

Примечание: Если вы находитесь в основном цикле, вы можете получить доступ к WP_Query через global $wp_query

mrmadhat mrmadhat
22 окт. 2019 г. 11:45:48
0

Я считаю, что 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; //подсчет постов в цикле

     endwhile;?>
16 окт. 2011 г. 23:54:30
2

Альтернативное решение с использованием WP_Query:

           <?php 
               $args = array(
               'post_type' => 'post'  // Тип записи - пост
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; // Общее количество найденных постов
            ?> 
21 мая 2019 г. 11:56:27
Комментарии

Это лучше, если вы используете пагинацию и хотите получить общее количество записей на всех страницах.

Jake Jake
11 янв. 2023 г. 15:20:31

found_posts лучше использовать, если вы применяете пагинацию и хотите получить полное общее количество записей на всех страницах.

Jake Jake
11 янв. 2023 г. 15:21:39
1

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

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
8 мая 2019 г. 13:17:02
Комментарии

found_posts лучше использовать, если вы применяете пагинацию и хотите получить общее количество записей на всех страницах.

Jake Jake
11 янв. 2023 г. 15:21:31