¿Cómo contar los posts de un loop personalizado de WordPress (WP_Query)?

28 ago 2011, 16:34:07
Vistas: 243K
Votos: 78

Intenté colocar esto:

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

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

Pero en lugar del total de posts, estoy obteniendo esta salida:

Traducción 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

¿Alguna sugerencia para arreglar esto?

0
Todas las respuestas a la pregunta 3
5
134

La forma correcta de obtener el número total de entradas es:

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

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

Edición: reconociendo la respuesta de @Kresimir Pendic como probablemente correcta. post_count es el recuento de entradas para esa página en particular, mientras que found_posts es el recuento de todas las entradas disponibles que cumplen con los requisitos de la consulta sin paginación. Gracias por la corrección.

28 ago 2011 16:53:23
Comentarios

¡Gracias! Una última pregunta. ¿Cómo puedo usar ese número para hacer una declaración if que esté fuera de ese bucle (antes del bucle)? Porque parece que el número solo se muestra cuando coloco la variable después de ese bucle.

wyc wyc
28 ago 2011 17:02:51

Puedes poner el $count = $custom_posts->post_count justo después del $custom_posts->query(). Ten en cuenta que $custom_posts->post_count solo te da el número de resultados en esa 'página' del conjunto de resultados. Si necesitas obtener el número total de resultados en 'todo' el conjunto de resultados, usa $custom_posts->found_posts.

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

Esta respuesta probablemente no es correcta para la mayoría de las situaciones. Usa found_posts (todos los posts encontrados) en lugar de post_count (número de posts a mostrar en esta página). Este comentario es redundante lógicamente hablando, pero no socialmente hablando.

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

Esta respuesta es incorrecta. $custom_posts->post_count devolverá la cantidad de entradas mostradas en esta página, por lo que mostrará el valor de posts_per_page de la consulta o un valor menor si la cantidad restante por mostrar es menor.

la respuesta correcta debería ser la de <@kresimir-pendic> que usa $custom_posts->found_posts

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

Me has salvado la vida. Hasta ahora he estado usando otra consulta para encontrar entradas sin paginación

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

Manny enlazó la página de documentación correcta pero post_count no es correcto. Para obtener el número total de entradas que devuelve WP_Query usa "found_posts"

<?php

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

Esta debería ser la respuesta aceptada.

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

Esta es definitivamente la respuesta correcta.

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

También reconfirmo que esta es la respuesta correcta. Esta debería ser aceptada.

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

Puedo confirmar la confirmación de que esta respuesta es de hecho verdadera. Al igual que la re-confirmación

Bysander Bysander
30 ene 2020 13:01:23

Al confirmar la confirmación de la confirmación más reciente, he determinado que la confirmación original está de hecho confirmada, al igual que la confirmación posterior a esa.

user38365 user38365
18 ago 2020 23:53:47

@Bysander declaró que él "puede confirmar la confirmación..." pero en realidad no confirmó. Por lo tanto, escribo para confirmar que estoy desconfirmando la confirmación de su supuesta confirmación.

Boycott A.I. Boycott A.I.
11 oct 2020 15:47:48
Mostrar los 1 comentarios restantes
0

O esto:

$query = new WP_Query( $args );
$count = $query->post_count;
19 nov 2020 11:56:53