กำลังนับโพสต์ของลูป Wordpress ที่กำหนดเอง (WP_Query)?


41

ฉันพยายามวางสิ่งนี้:

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

ในตอนท้ายของลูป:

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

แต่แทนที่จะรวมโพสต์ฉันได้รับผลลัพธ์นี้:

การแปล 1

Loren ipsum dolor amet amet, consetetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. ใช้เวลา 1

ข้อเสนอแนะใด ๆ ในการแก้ไขปัญหานี้?

คำตอบ:


74

วิธีที่ถูกต้องในการรับจำนวนโพสต์ทั้งหมดคือ:

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

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

แก้ไข: ยอมรับคำตอบของ @Kresimir Pendic ว่าอาจถูกต้อง post_countคือจำนวนการโพสต์สำหรับหน้านั้นขณะที่found_postsเป็นการนับการโพสต์ที่มีอยู่ทั้งหมดซึ่งตรงตามข้อกำหนดของการสืบค้นโดยไม่มีการแบ่งหน้า ขอบคุณสำหรับการแก้ไข


ขอบคุณ! เฮ้หนึ่งคำถามสุดท้าย ฉันจะใช้หมายเลขนั้นเพื่อสร้างคำสั่ง if ซึ่งอยู่นอกลูปนั้นได้อย่างไร (ก่อนลูป) เพราะดูเหมือนว่าตัวเลขจะปรากฏเฉพาะเมื่อฉันวางตัวแปรหลังจากวนรอบนั้น
janoChen

4
คุณสามารถใส่ $ count = $ custom_posts-> post_count หลังแบบสอบถาม $ custom_posts-> () โปรดทราบว่า $ custom_posts-> post_count จะทำให้คุณได้รับจำนวนผลลัพธ์ใน 'หน้า' ของชุดผลลัพธ์เท่านั้น หากคุณต้องการรับจำนวนผลลัพธ์ทั้งหมดในชุดผลลัพธ์ 'ทั้งหมด' ให้ใช้ $ custom_posts-> found_posts
Robert Durgin

2
คำตอบนี้น่าจะไม่ถูกต้องสำหรับสถานการณ์ส่วนใหญ่ ใช้ found_posts (โพสต์ที่พบทั้งหมด) แทน post_count (จำนวนโพสต์ที่จะแสดงในหน้านี้) ความคิดเห็นนี้เป็นการพูดซ้ำซ้อนอย่างมีเหตุผล แต่ไม่ใช่การพูดในเชิงสังคม
Herbert Van-Vliet

1
คำตอบนี้ไม่ถูกต้อง $custom_posts->post_countจะส่งคืนจำนวนการโพสต์ที่แสดงในหน้านี้ดังนั้นมันจะแสดงposts_per_pageมูลค่าของการสืบค้นหรือค่าที่ต่ำกว่าหากจำนวนเงินที่เหลืออยู่เพื่อแสดงนั้นต่ำกว่า คำตอบที่ถูกต้องควรเป็น<@kresimir-pendic>คำตอบที่ใช้$custom_posts->found_posts
Infinity Media

42

แมนนี่เชื่อมโยงหน้าเอกสารที่ถูกต้อง แต่post_countผิด หากต้องการรับจำนวนโพสต์ทั้งหมดWP_Queryให้ใช้ "found_posts"

<?php

// The Query
$query = new WP_Query( $args );
$total = $query->found_posts;

3
อันนี้ควรเป็นคำตอบที่ได้รับการยอมรับ
Christine Cooper

1
นี่คือคำตอบที่ถูกต้องอย่างแน่นอน
Infinity Media

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