Підрахунок публікацій користувацького циклу 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, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim 1

Будь-які пропозиції виправити це?

Відповіді:


74

Правильний спосіб отримання загальної кількості дописів:

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

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

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


Дякую! Привіт, останнє запитання. Як я можу використовувати це число, щоб зробити оператор if, який знаходиться поза цією петлею (до циклу). Тому що здається, що число відображається лише тоді, коли я розміщую змінну після цього циклу.
janoChen

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

Я також підтверджую, що це правильна відповідь. Це слід прийняти.
Я найдурніша людина
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.