Đếm các bài đăng của vòng lặp Wordpress tùy chỉnh (WP_Query)?


41

Tôi đã thử tìm hiểu điều này:

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

ở cuối vòng lặp:

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

Nhưng thay vì tổng số bài viết, tôi nhận được kết quả này:

Dịch 1

Lorem ipsum dolor ngồi amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Út enisi 1

Bất kỳ đề nghị để khắc phục điều này?

Câu trả lời:


74

Cách chính xác để có được tổng số bài viết là:

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

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

Chỉnh sửa: thừa nhận câu trả lời của @Kresimir Pendic có lẽ đúng. post_countlà số lượng bài đăng cho trang cụ thể đó, trong khi đó found_postslà số lượng cho tất cả các bài đăng có sẵn đáp ứng các yêu cầu của truy vấn mà không cần phân trang. Cảm ơn bạn đã sửa chữa.


Cảm ơn! Này một câu hỏi cuối cùng. Làm thế nào tôi có thể sử dụng số đó để tạo một câu lệnh if nằm ngoài vòng lặp đó (trước vòng lặp). Bởi vì có vẻ như số chỉ được hiển thị khi tôi đặt biến sau vòng lặp đó.
janoChen

4
Bạn có thể đặt $ Count = $ custom_posts-> post_count ngay sau truy vấn $ custom_posts-> (). Lưu ý rằng $ custom_posts-> post_count chỉ giúp bạn có được số lượng kết quả trong 'trang' của tập kết quả đó. Nếu bạn cần lấy tổng số kết quả trong tập kết quả 'toàn bộ', hãy sử dụng $ custom_posts-> Found_posts.
Robert Durgin

2
Câu trả lời này rất có thể không đúng cho hầu hết các tình huống. Sử dụng Found_posts (tất cả các bài đăng được tìm thấy) thay vì post_count (số lượng bài đăng để hiển thị trên trang này). Nhận xét này là dư thừa nói một cách logic, nhưng không nói về mặt xã hội.
Herbert Van-Vliet

1
Câu trả lời này không chính xác. $custom_posts->post_countsẽ trả về số lượng bài đăng được hiển thị trên trang này, vì vậy nó sẽ hiển thị posts_per_pagegiá trị của truy vấn hoặc giá trị thấp hơn nếu số lượng còn lại để hiển thị thấp hơn. câu trả lời đúng phải là <@kresimir-pendic>câu trả lời được sử dụng$custom_posts->found_posts
Infinity Media

42

Manny liên kết trang tài liệu chính xác nhưng post_countlà sai. Để có được tổng số bài đăng WP_Querytrả về, hãy sử dụng "Found_posts"

<?php

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

3
Điều này nên là câu trả lời được chấp nhận.
Christine Cooper

1
Đây hoàn toàn là câu trả lời đúng.
Infinity Media

Tôi cũng xác nhận lại rằng đây là câu trả lời đúng. Điều này nên được chấp nhận.
Tôi là người ngu ngốc nhất
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.