Numărarea articolelor dintr-un loop personalizat WordPress (WP_Query)?

28 aug. 2011, 16:34:07
Vizualizări: 243K
Voturi: 78

Am încercat să pun următorul cod:

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

la sfârșitul buclei:

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

Dar în loc să obțin numărul total de articole, primesc această ieșire:

Traducere 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

Aveți sugestii pentru a rezolva această problemă?

0
Toate răspunsurile la întrebare 3
5
134

Modul corect de a obține numărul total de articole este:

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

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

Modificare: Recunoscând răspunsul lui @Kresimir Pendic ca fiind probabil corect. post_count reprezintă numărul de articole pentru pagina respectivă, în timp ce found_posts reprezintă numărul total de articole care îndeplinesc cerințele interogării, fără paginare. Mulțumesc pentru corecție.

28 aug. 2011 16:53:23
Comentarii

Mulțumesc! Încă o ultimă întrebare. Cum pot folosi acel număr pentru a face o instrucțiune if care este în afara buclei (înaintea buclei)? Pentru că se pare că numărul este afișat doar când plasez variabila după acea buclă.

wyc wyc
28 aug. 2011 17:02:51

Poți pune $count = $custom_posts->post_count imediat după $custom_posts->query(). Reține că $custom_posts->post_count îți oferă doar numărul de rezultate din acea 'pagină' a setului de rezultate. Dacă ai nevoie să obții numărul total de rezultate din 'întregul' set de rezultate, folosește $custom_posts->found_posts.

Robert Durgin Robert Durgin
29 iul. 2016 03:34:41

Acest răspuns cel mai probabil nu este corect pentru majoritatea situațiilor. Folosește found_posts (toate postările găsite) în loc de post_count (numărul de postări de afișat pe această pagină). Acest comentariu este redundant din punct de vedere logic, dar nu și din punct de vedere social.

Herbert Van-Vliet Herbert Van-Vliet
23 dec. 2017 13:43:24

Acest răspuns este incorect. $custom_posts->post_count va returna numărul de articole afișate pe această pagină, deci va afișa fie valoarea posts_per_page din interogare, fie o valoare mai mică dacă numărul rămas de afișat este mai mic.

răspunsul corect ar trebui să fie cel al lui <@kresimir-pendic> care folosește $custom_posts->found_posts

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

Salvator. Până acum am folosit o altă interogare pentru a găsi articole fără paginare

melvin melvin
10 dec. 2021 16:53:32
6
60

Manny a furnizat pagina corectă de documentație, dar post_count este greșit. Pentru a obține numărul total de articole returnate de WP_Query folosiți "found_posts"

<?php

// Interogarea
$query = new WP_Query( $args );
$total = $query->found_posts;
2 nov. 2017 10:21:52
Comentarii

Acesta ar trebui să fie răspunsul acceptat.

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

Acesta este cu siguranță răspunsul corect.

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

De asemenea, confirm că acesta este răspunsul corect. Acesta ar trebui să fie acceptat.

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

Pot confirma confirmarea că acest răspuns este de fapt adevărat. La fel este și re-confirmarea

Bysander Bysander
30 ian. 2020 13:01:23

În confirmarea confirmării celei mai recente confirmări am determinat că confirmarea originală este într-adevăr confirmată, la fel ca și confirmarea de după aceea.

user38365 user38365
18 aug. 2020 23:53:47

@Bysander a afirmat că "poate confirma confirmarea..." dar nu a confirmat de fapt. Prin urmare, scriu pentru a confirma că eu infirm confirmarea presupusei sale confirmări.

Boycott A.I. Boycott A.I.
11 oct. 2020 15:47:48
Arată celelalte 1 comentarii
0

Sau aceasta:

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