カスタムWordpressループ(WP_Query)の投稿をカウントしますか?


41

私はこれをtplacingしてみました:

    <?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 sit amet、consectetuer adipiscing elit、sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat。Ut wisi enim 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-> query()の直後に配置できます。$ custom_posts-> post_countは、結果セットの「ページ」にある結果の数のみを取得することに注意してください。「全体」の結果セットで結果の総数を取得する必要がある場合は、$ custom_posts-> found_postsを使用します。
ロバートダーギン16

2
ほとんどの場合、この答えはおそらく正しくありません。post_count(このページに表示する投稿の数)の代わりにfound_posts(すべての見つかった投稿)を使用します。このコメントは論理的に冗長ですが、社会的には冗長ではありません。
ハーバートヴァンフリート

1
この答えは間違っています。$custom_posts->post_countこのページに表示される投稿の量を返すためposts_per_page、クエリの値または表示する残りの量が少ない場合は低い値のいずれかが表示されます。正しい答えはする必要があります<@kresimir-pendic>使用していることの答え$custom_posts->found_posts
インフィニティメディア

42

マニーは正しいドキュメントページをリンクしましたpost_countが、間違っています。投稿WP_Queryリターンの総数を取得するには、「found_posts」を使用します

<?php

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

3
これは受け入れられた答えであるはずです。
クリスティーンクーパー

1
これは絶対に正しい答えです。
インフィニティメディア

また、これが正しい答えであることを再確認します。これは受け入れられるべきです。
私は最も愚かな人です
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.