現在の投稿数をループ内で数えようとしています。私は私のテーマの1ページに複数のループを使用しています。これまでのところ私は持っています:
$my_post_count = $wp_query->post_count;
しかし、$ my_post_countを印刷すると、WPサイトのすべての投稿の数が返されます。 1ページに複数のクエリを使用することと関係があるのでしょうか。私はすべてのループの後にwp_reset_queryを使用して、そのように物事を捨てていないことを確認しました。何がおかしいのですか?
$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);
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;?>
WP_Queryを使用した代替ソリューションは次のようになります。
<?php
$args = array(
'post_type' => 'post'
);
$the_query = new WP_Query( $args );
$totalpost = $the_query->found_posts;
?>
ページネーションを含む総投稿数をカウントする簡単な方法
<?php global $wp_query
echo $wp_query->found_posts; ?>