Zliczasz posty niestandardowej pętli Wordpress (WP_Query)?

41

Próbowałem umieścić to:

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

na końcu pętli:

      <?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; ?>

Ale zamiast łącznej liczby postów, otrzymuję ten wynik:

Tłumaczenie 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

Wszelkie sugestie, aby to naprawić?

janoChen
źródło

Odpowiedzi:

74

Prawidłowy sposób uzyskania całkowitej liczby postów to:

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

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

Edycja: uznanie odpowiedzi @Kresimira Pendica za prawdopodobnie poprawną. post_countto liczba postów dla tej konkretnej strony, natomiast found_postsliczba wszystkich dostępnych postów spełniających wymagania zapytania bez podziału na strony. Dziękuję za poprawę.

Manny Fleurmond
źródło
Dzięki! Hej, ostatnie pytanie. Jak mogę użyć tej liczby, aby wykonać instrukcję if, która jest poza tą pętlą (przed pętlą). Ponieważ wydaje się, że liczba jest wyświetlana tylko wtedy, gdy umieszczam zmienną po tej pętli.
janoChen
4
Możesz umieścić $ count = $ custom_posts-> post_count zaraz po zapytaniu $ custom_posts-> (). Zauważ, że $ custom_posts-> post_count pobiera tylko liczbę wyników na tej „stronie” zestawu wyników. Jeśli chcesz uzyskać całkowitą liczbę wyników w „całościowym” zestawie wyników, użyj $ custom_posts-> found_posts.
Robert Durgin
2
Ta odpowiedź najprawdopodobniej nie jest poprawna w większości sytuacji. Użyj found_posts (wszystkie znalezione posty) zamiast post_count (liczba postów wyświetlanych na tej stronie). Ten komentarz jest zbędny logicznie, ale nie społecznie.
Herbert Van-Vliet,
1
Ta odpowiedź jest niepoprawna. $custom_posts->post_countzwróci liczbę postów pokazanych na tej stronie, więc wyświetli albo posts_per_pagewartość zapytania, albo mniejszą wartość, jeśli pozostała do wyświetlenia liczba będzie niższa. poprawną odpowiedzią powinna być <@kresimir-pendic>odpowiedź, która używa$custom_posts->found_posts
Infinity Media
42

Manny podłączył poprawną stronę dokumentacji, ale post_countjest niepoprawny. Aby uzyskać całkowitą liczbę WP_Queryzwrotów postów, użyj „found_posts”

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;
Kresimir Pendic
źródło
3
To powinna być zaakceptowana odpowiedź.
Christine Cooper
1
To jest absolutnie właściwa odpowiedź.
Infinity Media
Potwierdzam również, że to poprawna odpowiedź. To powinno zostać zaakceptowane.
Jestem najgłupszą osobą