web-dev-qa-db-ja.com

1ページで複数のクエリを使用しているときに現在のループの投稿数を取得する

現在の投稿数をループ内で数えようとしています。私は私のテーマの1ページに複数のループを使用しています。これまでのところ私は持っています:

$my_post_count = $wp_query->post_count;

しかし、$ my_post_countを印刷すると、WPサイトのすべての投稿の数が返されます。 1ページに複数のクエリを使用することと関係があるのでしょうか。私はすべてのループの後にwp_reset_queryを使用して、そのように物事を捨てていないことを確認しました。何がおかしいのですか?

10
pwbred

$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);
27
Rarst

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

WP_Queryを使用した代替ソリューションは次のようになります。

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

ページネーションを含む総投稿数をカウントする簡単な方法

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
0
Suresh Suthar