Dapatkan hitungan posting dari loop saat ini ketika menggunakan beberapa kueri pada satu halaman

10

Saya mencoba menghitung jumlah posting saat ini di dalam satu lingkaran. Saya menggunakan banyak loop pada satu halaman di tema saya. Sejauh ini saya punya:

$my_post_count = $wp_query->post_count;

Tetapi ketika saya mencetak $ my_post_count, ia mengembalikan jumlah semua posting di situs WP saya. Mungkinkah ada hubungannya dengan menggunakan beberapa kueri pada satu halaman? Saya mencoba menggunakan wp_reset_query setelah setiap loop untuk memastikan saya tidak membuang hal-hal seperti itu. Apa yang saya lakukan salah?

pwbred
sumber

Jawaban:

29

$wp_query tahan loop utama halaman dan jangan digunakan untuk membuat banyak loop.

Jika Anda menggunakan WP_Queryobjek baru maka variabel Anda yang memegangnya akan memiliki jumlah sesuai:

$my_query = new WP_Query();
// stuff
$count = $my_query->post_count;

Jika Anda menggunakan get_posts()maka WP_Queryobjek tidak dapat diakses dan Anda hanya harus menghitung set yang dikembalikan:

$posts = get_posts();
$count = count($posts);
Jarang
sumber
Catatan: Jika Anda berada di loop utama, Anda dapat mengakses WP_Querymelaluiglobal $wp_query
mrmadhat
5

Saya percaya post_count disimpan di global, jadi sebelum loop kustom Anda harus mengaturnya 0, karena Anda dapat menggunakannya di luar loop, tetapi ini tergantung pada bagaimana Anda menyusun beberapa permintaan Anda, mungkin Anda dapat menambahkannya ke posting Anda ?

Ada cara lain yang saya gunakan dalam loop yang menghitung posting menggunakan current_post + 1, misalnya.

<?php $my_query = new WP_Query();?>
     <?php if ($my_query->have_posts()) :while ($my_query->have_posts()) : $my_query->the_post();

           $count_posts = $my_query->current_post + 1; //counts posts in loop

     endwhile;?>
Wyck
sumber
2

Solusi alternatif menggunakan WP_Query adalah:

           <?php 
               $args = array(
               'post_type' => 'post'
               );
            $the_query = new WP_Query( $args );
            $totalpost = $the_query->found_posts; 
            ?> 
Amritosh pandey
sumber
0

Cara sederhana untuk menghitung total posting termasuk pagignation

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
Suresh Suthar
sumber