Считать сообщения пользовательского цикла Wordpress (WP_Query)?

41

Я попытался поместить это:

    <?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, посвященный адептированию elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim 1

Любые предложения, чтобы это исправить?

janoChen
источник

Ответы:

74

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

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

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

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

Мэнни Флермонд
источник
Благодарность! Привет, последний вопрос. Как я могу использовать это число, чтобы сделать оператор if, который находится вне этого цикла (до цикла). Потому что кажется, что число отображается только тогда, когда я помещаю переменную после этого цикла.
ДжаноЧен
4
Вы можете поместить $ count = $ custom_posts-> post_count сразу после $ custom_posts-> query (). Обратите внимание, что $ custom_posts-> post_count получает только количество результатов на этой «странице» набора результатов. Если вам нужно получить общее количество результатов в наборе результатов «весь», используйте $ custom_posts-> found_posts.
Роберт Дургин
2
Этот ответ, скорее всего, не подходит для большинства ситуаций. Используйте found_posts (все найденные сообщения) вместо post_count (количество сообщений для отображения на этой странице). Этот комментарий излишне логичен, но не социально.
Герберт Ван-Влит
1
Этот ответ неверен. $custom_posts->post_countвернет количество сообщений, показанных на этой странице, поэтому будет отображаться либо posts_per_pageзначение запроса, либо меньшее значение, если оставшееся количество будет меньше. правильный ответ должен быть <@kresimir-pendic>ответом, который использует$custom_posts->found_posts
Infinity Media
42

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

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;
Кресимир Пендик
источник
3
Этот должен быть принятым ответом.
Кристина Купер
1
Это абсолютно правильный ответ.
Infinity Media
Я также подтверждаю, что это правильный ответ. Это должно быть принято.
Я самый глупый человек