Zählen Sie die Beiträge einer benutzerdefinierten Wordpress-Schleife (WP_Query)?

41

Ich habe versucht, Folgendes zu platzieren:

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

am Ende der Schleife:

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

Aber anstelle der Gesamtzahl der Beiträge erhalte ich diese Ausgabe:

Übersetzung 1

Lorem Ipsum Dolor Sit Amet, Consectetuer Adipiscing Elite, Sed Diam Nonummy Nibh Euismod Tincidunt Ut Laoreet Dolore Magna Aliquam Erat Volutpat. Ut wisi enim 1

Irgendwelche Vorschläge, um das zu beheben?

janoChen
quelle

Antworten:

74

Richtige Methode zum Abrufen der Gesamtzahl der Beiträge ist:

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

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

Edit: Bestätige die Antwort von @Kresimir Pendic als wahrscheinlich richtig. post_countDies ist die Anzahl der Beiträge für diese bestimmte Seite, während dies found_postsdie Anzahl aller verfügbaren Beiträge ist, die die Anforderungen der Abfrage ohne Paginierung erfüllen. Danke für die Verbesserung.

Manny Fleurmond
quelle
Vielen Dank! Hey, eine letzte Frage. Wie kann ich diese Zahl verwenden, um eine if-Anweisung zu erstellen, die außerhalb dieser Schleife (vor der Schleife) steht? Weil es so aussieht, als würde die Nummer nur angezeigt, wenn ich die Variable hinter diese Schleife setze.
janoChen
4
Sie können $ count = $ custom_posts-> post_count direkt nach der $ custom_posts-> query () einfügen. Beachten Sie, dass mit $ custom_posts-> post_count nur die Anzahl der Ergebnisse auf dieser 'Seite' der Ergebnismenge angezeigt wird. Wenn Sie die Gesamtzahl der Ergebnisse in der gesamten Ergebnismenge erhalten möchten, verwenden Sie $ custom_posts-> found_posts.
Robert Durgin
2
Diese Antwort ist in den meisten Situationen höchstwahrscheinlich nicht richtig. Verwenden Sie found_posts (alle gefundenen Posts) anstelle von post_count (Anzahl der Posts, die auf dieser Seite angezeigt werden sollen). Dieser Kommentar ist logisch gesehen überflüssig, sozial gesehen jedoch nicht.
Herbert Van-Vliet
1
Diese Antwort ist falsch. $custom_posts->post_countgibt die Anzahl der auf dieser Seite angezeigten Beiträge zurück, sodass entweder der posts_per_pageWert der Abfrage oder ein niedrigerer Wert angezeigt wird, wenn der verbleibende Betrag für die Anzeige niedriger ist. Die richtige Antwort sollte die <@kresimir-pendic>Antwort sein, die verwendet$custom_posts->found_posts
Infinity Media
42

Manny hat die richtige Dokumentationsseite verlinkt, post_countist aber falsch. WP_QueryVerwenden Sie "found_posts", um die Gesamtzahl der zurückgegebenen Beiträge zu erhalten.

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;
Kresimir Pendic
quelle
3
Dies sollte die akzeptierte Antwort sein.
Christine Cooper
1
Das ist absolut die richtige Antwort.
Infinity Media
Ich bestätige auch, dass dies die richtige Antwort ist. Dies sollte akzeptiert werden.
Ich bin die dümmste Person