Conteggio dei post di un loop Wordpress personalizzato (WP_Query)?


41

Ho provato a posizionare questo:

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

alla fine del ciclo:

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

Ma invece del totale dei post, ottengo questo output:

Traduzione 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

Qualche suggerimento per risolvere questo problema?

Risposte:


74

Il modo corretto di ottenere il numero totale di post è:

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

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

Modifica: riconoscendo la risposta di @Kresimir Pendic come probabilmente corretta. post_countè il conteggio dei post per quella particolare pagina, mentre found_postsè il conteggio per tutti i post disponibili che soddisfa i requisiti della query senza impaginazione. Grazie per la correzione.


Grazie! Ehi un'ultima domanda. Come posso usare quel numero per fare un'istruzione if che è fuori da quel ciclo (prima del ciclo). Perché sembra che il numero sia visualizzato solo quando inserisco la variabile dopo quel ciclo.
janoChen,

4
Puoi inserire $ count = $ custom_posts-> post_count subito dopo $ custom_posts-> query (). Nota che $ custom_posts-> post_count ti dà solo il numero di risultati in quella 'pagina' del set di risultati. Se è necessario ottenere il numero totale di risultati nel set di risultati "intero", utilizzare $ custom_posts-> found_posts.
Robert Durgin,

2
Molto probabilmente questa risposta non è corretta per la maggior parte delle situazioni. Usa found_posts (tutti i post trovati) anziché post_count (numero di post da visualizzare in questa pagina). Questo commento è logicamente ridondante, ma non socialmente parlando.
Herbert Van-Vliet il

1
Questa risposta non è corretta $custom_posts->post_countrestituirà la quantità di post mostrati in questa pagina, quindi mostrerà il posts_per_pagevalore della query o un valore inferiore se la quantità rimanente da mostrare è inferiore. la risposta corretta dovrebbe essere <@kresimir-pendic>la risposta che utilizza$custom_posts->found_posts
Infinity Media,

42

Manny ha collegato la pagina di documentazione corretta ma post_countè errata. Per ottenere il numero totale di WP_Queryresi, utilizza "found_posts"

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;

3
Questa dovrebbe essere la risposta accettata.
Christine Cooper

1
Questa è assolutamente la risposta giusta.
Infinity Media,

Riconferma anche che questa è la risposta corretta. Questo dovrebbe essere accettato.
Sono la persona più stupida del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.