Contare i post di un loop WordPress personalizzato (WP_Query)?

28 ago 2011, 16:34:07
Visualizzazioni: 243K
Voti: 78

Ho provato a inserire questo:

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

alla fine del loop:

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

0
Tutte le risposte alla domanda 3
5
134

Il modo corretto per ottenere il numero totale dei post è:

<?php $count = $custom_posts->found_posts; // Ottiene il numero totale dei post ?>

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 di tutti i post disponibili che soddisfano i requisiti della query senza paginazione. Grazie per la correzione.

28 ago 2011 16:53:23
Commenti

Grazie! Ehi un'ultima domanda. Come posso usare quel numero per creare un'istruzione if che sia fuori da quel ciclo (prima del ciclo)? Perché sembra che il numero venga visualizzato solo quando posiziono la variabile dopo quel ciclo.

wyc wyc
28 ago 2011 17:02:51

Puoi inserire il $count = $custom_posts->post_count subito dopo $custom_posts->query(). Nota che $custom_posts->post_count ti restituisce solo il numero di risultati in quella 'pagina' del set di risultati. Se hai bisogno di ottenere il numero totale di risultati nell'intero set di risultati, usa $custom_posts->found_posts.

Robert Durgin Robert Durgin
29 lug 2016 03:34:41

Questa risposta molto probabilmente non è corretta per la maggior parte delle situazioni. Usa found_posts (tutti i post trovati) invece di post_count (numero di post da visualizzare in questa pagina). Questo commento è logicamente ridondante, ma non dal punto di vista sociale.

Herbert Van-Vliet Herbert Van-Vliet
23 dic 2017 13:43:24

Questa risposta è errata. $custom_posts->post_count restituirà la quantità di post mostrati in questa pagina, quindi mostrerà il valore di posts_per_page della query oppure un valore inferiore se la quantità rimanente da mostrare è minore.

La risposta corretta dovrebbe essere quella di <@kresimir-pendic> che usa $custom_posts->found_posts

Infinity Media Infinity Media
12 mar 2018 16:13:23

Mi hai salvato la vita. Fino ad ora ho usato un'altra query per trovare i post senza paginazione

melvin melvin
10 dic 2021 16:53:32
6
60

Manny ha linkato la pagina di documentazione corretta ma post_count non è corretto. Per ottenere il numero totale di post che una WP_Query restituisce usa "found_posts"

<?php

// La Query
$query = new WP_Query( $args );
$total = $query->found_posts;
2 nov 2017 10:21:52
Commenti

Questa dovrebbe essere la risposta accettata.

Christine Cooper Christine Cooper
6 feb 2018 17:49:49

Questa è assolutamente la risposta giusta.

Infinity Media Infinity Media
12 mar 2018 16:13:52

Confermo anche io che questa è la risposta corretta. Questa dovrebbe essere accettata.

I am the Most Stupid Person I am the Most Stupid Person
21 giu 2019 09:43:14

Posso confermare la conferma che questa risposta è effettivamente vera. Come anche la ri-conferma

Bysander Bysander
30 gen 2020 13:01:23

Nel confermare la conferma della più recente conferma ho determinato che la conferma originale è effettivamente confermata, così come la conferma successiva a quella.

user38365 user38365
18 ago 2020 23:53:47

@Bysander ha affermato che "può confermare la conferma..." ma non l'ha effettivamente confermata. Pertanto, scrivo per confermare che sto sconfermando la conferma della sua presunta conferma.

Boycott A.I. Boycott A.I.
11 ott 2020 15:47:48
Mostra i restanti 1 commenti
0

Oppure questo:

$query = new WP_Query( $args );
$count = $query->post_count; // Ottiene il conteggio dei post dalla query
19 nov 2020 11:56:53