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


10

ループ内の現在の投稿の数を取得しようとしています。テーマの1つのページで複数のループを使用しています。これまでのところ:

$my_post_count = $wp_query->post_count;

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

回答:


29

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

注:メインループである場合は、アクセスすることができWP_Queryglobal $wp_query
mrmadhat

5

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

2

WP_Queryを使用した代替ソリューションは次のとおりです。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.