รับจำนวนการโพสต์ของวงปัจจุบันเมื่อใช้แบบสอบถามหลายรายการในหน้าเดียว


10

ฉันกำลังพยายามนับจำนวนโพสต์ปัจจุบันภายในลูป ฉันใช้หลายลูปในหน้าเดียวในธีมของฉัน จนถึงตอนนี้ฉันมี:

$my_post_count = $wp_query->post_count;

แต่เมื่อฉันพิมพ์ $ my_post_count มันจะส่งกลับจำนวนโพสต์ทั้งหมดบนไซต์ WP ของฉัน มีบางสิ่งที่เกี่ยวข้องกับการใช้หลายแบบสอบถามในหนึ่งหน้า ฉันพยายามใช้ wp_reset_query หลังจากวนซ้ำทุกครั้งเพื่อให้แน่ใจว่าฉันไม่ได้ทิ้งทุกอย่างไป ผมทำอะไรผิดหรือเปล่า?

คำตอบ:


29

$wp_query ถือลูปหลักของหน้าและไม่ควรใช้เพื่อสร้างหลายลูป

หากคุณใช้WP_Queryวัตถุใหม่ตัวแปรของคุณที่เก็บไว้จะมีจำนวนตาม:

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

หากคุณกำลังใช้get_posts()แล้วWP_Queryวัตถุไม่สามารถเข้าถึงได้และคุณก็ควรนับชุดกลับมาว่า:

$posts = get_posts();
$count = count($posts);

หมายเหตุ: หากคุณอยู่ในลูปหลักคุณสามารถเข้าถึงWP_Queryผ่านglobal $wp_query
mrmadhat

5

ฉันเชื่อว่า post_count ถูกเก็บไว้ในโกลบอลดังนั้นก่อนที่จะวนลูปที่กำหนดเองคุณควรตั้งเป็น0เนื่องจากคุณสามารถใช้นอกลูปได้ ?

มีอีกวิธีที่ฉันใช้ภายในลูปที่นับการโพสต์ที่ใช้current_post + 1เช่น

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

2

โซลูชันทางเลือกโดยใช้ WP_Query จะเป็น:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.