Подсчет записей в пользовательском цикле WordPress (WP_Query)?

28 авг. 2011 г., 16:34:07
Просмотры: 243K
Голосов: 78

Я попробовал разместить это:

    <?php $count = count($custom_posts); ?>
    <h2><?php echo $count; ?></h2>

в конце цикла:

      <?php if ( bbp_get_forum_title() == 'Test Forum 1' ) : ?>
            <?php $custom_posts = new WP_Query(); ?>
            <?php $custom_posts->query('post_type=blocks&location=Business and Finance&order=DESC'); ?>
            <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?>
                <div class="ad">
                    <?php the_content(); ?>
                </div>
                <?php $count = count($custom_posts); ?>
                <h2><?php echo $count; ?></h2>
            <?php endwhile; ?>
      <?php endif; ?>

Но вместо общего количества записей я получаю такой вывод:

Перевод 1

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim 1

Есть предложения как это исправить?

0
Все ответы на вопрос 3
5
134

Правильный способ получения общего количества записей:

<?php $count = $custom_posts->found_posts; ?>

http://codex.wordpress.org/Class_Reference/WP_Query#Properties

Редактирование: признавая ответ @Kresimir Pendic как вероятно правильный. post_count - это количество записей для конкретной страницы, в то время как found_posts - это количество всех доступных записей, которые соответствуют требованиям запроса без учета пагинации. Спасибо за исправление.

28 авг. 2011 г. 16:53:23
Комментарии

Спасибо! Эй, последний вопрос. Как я могу использовать это число для создания условного оператора if, который находится вне этого цикла (перед циклом)? Потому что похоже, что число отображается только когда я размещаю переменную после этого цикла.

wyc wyc
28 авг. 2011 г. 17:02:51

Вы можете поместить $count = $custom_posts->post_count сразу после $custom_posts->query(). Обратите внимание, что $custom_posts->post_count даёт вам только количество результатов на этой 'странице' набора результатов. Если вам нужно получить общее количество результатов во 'всём' наборе результатов, используйте $custom_posts->found_posts.

Robert Durgin Robert Durgin
29 июл. 2016 г. 03:34:41

Этот ответ, скорее всего, не является правильным для большинства ситуаций. Используйте found_posts (все найденные записи) вместо post_count (количество записей для отображения на этой странице). Этот комментарий логически избыточен, но не с социальной точки зрения.

Herbert Van-Vliet Herbert Van-Vliet
23 дек. 2017 г. 13:43:24

Этот ответ неверный. $custom_posts->post_count вернет количество записей, показанных на этой странице, поэтому он отобразит либо значение posts_per_page запроса, либо меньшее значение, если оставшееся количество для показа меньше.

правильным ответом должен быть ответ <@kresimir-pendic>, который использует $custom_posts->found_posts

Infinity Media Infinity Media
12 мар. 2018 г. 16:13:23

Спасение! До сих пор я использовал другой запрос для поиска записей без пагинации

melvin melvin
10 дек. 2021 г. 16:53:32
6
60

Manny указал правильную страницу документации, но post_count неверный. Чтобы получить общее количество записей, которые возвращает WP_Query, используйте "found_posts"

<?php

// Выполняем запрос
$query = new WP_Query( $args );
$total = $query->found_posts;
2 нояб. 2017 г. 10:21:52
Комментарии

Этот ответ должен быть принят.

Christine Cooper Christine Cooper
6 февр. 2018 г. 17:49:49

Это абсолютно правильный ответ.

Infinity Media Infinity Media
12 мар. 2018 г. 16:13:52

Я также подтверждаю, что это правильный ответ. Он должен быть принят.

I am the Most Stupid Person I am the Most Stupid Person
21 июн. 2019 г. 09:43:14

Я могу подтвердить подтверждение того, что этот ответ действительно верен. Как и повторное подтверждение

Bysander Bysander
30 янв. 2020 г. 13:01:23

Подтверждая подтверждение самого последнего подтверждения, я определил, что первоначальное подтверждение действительно подтверждено, как и подтверждение после него.

user38365 user38365
18 авг. 2020 г. 23:53:47

@Bysander заявил, что он "может подтвердить подтверждение..." но фактически не подтвердил. Поэтому я пишу, чтобы подтвердить, что я отменяю подтверждение его предполагаемого подтверждения.

Boycott A.I. Boycott A.I.
11 окт. 2020 г. 15:47:48
Показать остальные 1 комментариев
0

Или это:

$query = new WP_Query( $args );
$count = $query->post_count;
19 нояб. 2020 г. 11:56:53