Получение количества записей текущего цикла при использовании нескольких запросов на одной странице
Я пытаюсь получить количество текущих записей внутри цикла. Я использую несколько циклов на одной странице в моей теме. Пока что у меня есть:
$my_post_count = $wp_query->post_count;
Но когда я вывожу $my_post_count, он возвращает количество всех записей на моем сайте WordPress. Может ли это быть связано с использованием нескольких запросов на одной странице? Я пробовал использовать wp_reset_query после каждого цикла, чтобы убедиться, что я не нарушаю работу таким образом. Что я делаю не так?
$wp_query
содержит основной цикл страницы и не должен использоваться для создания нескольких циклов.
Если вы используете новый объект WP_Query
, то ваша переменная, которая его хранит, будет иметь соответствующее количество записей:
$my_query = new WP_Query();
// действия
$count = $my_query->post_count;
Если вы используете get_posts()
, то объект WP_Query
недоступен, и вам следует просто посчитать возвращаемый набор:
$posts = get_posts();
$count = count($posts);

Я считаю, что 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;?>
