Menghitung posting dari loop Wordpress khusus (WP_Query)?

41

Saya mencoba mengganti ini:

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

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

Tetapi alih-alih dari total posting, saya mendapatkan output ini:

Terjemahan 1

Anda juga dapat memilih dari semua yang Anda butuhkan, serta memilih yang lain, dan tidak ada yang dapat dilakukan di luar untuk melakukan yang lebih baik dan juga terkait dengan volutpat. Ut wisi enim 1

Ada saran untuk memperbaikinya?

janoChen
sumber

Jawaban:

74

Cara yang benar untuk mendapatkan jumlah total posting adalah:

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

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

Sunting: mengakui jawaban @Kresimir Pendic mungkin benar. post_countadalah jumlah posting untuk halaman tertentu, sementara itu found_postsadalah jumlah untuk semua posting yang tersedia yang memenuhi persyaratan permintaan tanpa pagination. Terima kasih atas koreksinya.

Manny Fleurmond
sumber
Terima kasih! Hai satu pertanyaan terakhir. Bagaimana saya bisa menggunakan nomor itu untuk membuat pernyataan if yang keluar dari loop itu (sebelum loop). Karena sepertinya angka hanya ditampilkan ketika saya menempatkan variabel setelah loop itu.
janoChen
4
Anda dapat meletakkan $ count = $ custom_posts-> post_count tepat setelah $ custom_posts-> query (). Perhatikan bahwa $ custom_posts-> post_count hanya memberi Anda jumlah hasil di 'halaman' dari set hasil. Jika Anda perlu mendapatkan jumlah total hasil di set hasil 'keseluruhan', gunakan $ custom_posts-> found_posts.
Robert Durgin
2
Jawaban ini kemungkinan besar tidak tepat untuk sebagian besar situasi. Gunakan found_posts (semua posting yang ditemukan) alih-alih post_count (jumlah posting untuk ditampilkan pada halaman ini). Komentar ini berlebihan secara logis, tetapi tidak secara sosial.
Herbert Van-Vliet
1
Jawaban ini salah. $custom_posts->post_countakan mengembalikan jumlah posting yang ditampilkan di halaman ini, sehingga akan menampilkan posts_per_pagenilai kueri atau nilai yang lebih rendah jika jumlah yang tersisa untuk ditampilkan lebih rendah. jawaban yang benar adalah <@kresimir-pendic>jawaban yang menggunakan$custom_posts->found_posts
Infinity Media
42

Manny menautkan halaman dokumentasi yang benar tetapi post_countsalah. Untuk mendapatkan jumlah total WP_Querypengembalian tulisan, gunakan "found_posts"

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;
Kresimir Pendic
sumber
3
Yang ini harus menjadi jawaban yang diterima.
Christine Cooper
1
Ini benar-benar jawaban yang tepat.
Infinity Media
Saya juga menegaskan kembali bahwa ini jawaban yang benar. Ini harus diterima.
Saya Orang yang Paling Bodoh