计数自定义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

Lorem ipsum dolor坐下,管教成才,sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat。Ut wisi enim 1

有什么建议可以解决这个问题吗?

Answers:


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-> query()之后。请注意,$ custom_posts-> post_count仅会为您提供结果集“页”中的结果数。如果您需要获取“整个”结果集中的结果总数,请使用$ custom_posts-> found_posts。
罗伯特·杜金2013年

2
在大多数情况下,此答案很可能不正确。使用found_posts(所有找到的帖子)而不是post_count(此页面上显示的帖子数)。从逻辑上来说,此评论是多余的,但从社交角度而言,则并非如此。
Herbert Van-Vliet

1
这个答案是不正确的。$custom_posts->post_count将返回此页面上显示的帖子数量,因此如果要显示posts_per_page的剩余数量较少,它将显示查询的值或较低的值。正确的答案应该是<@kresimir-pendic>使用的答案$custom_posts->found_posts
Infinity Media

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.