한 페이지에서 여러 쿼리를 사용할 때 현재 루프의 게시물 수 얻기


10

루프 내부의 현재 게시물 수를 얻으려고합니다. 내 테마의 한 페이지에 여러 루프를 사용하고 있습니다. 지금까지 나는 :

$my_post_count = $wp_query->post_count;

그러나 $ my_post_count를 인쇄하면 내 WP 사이트의 모든 게시물 수를 반환합니다. 한 페이지에서 여러 개의 쿼리를 사용하는 것과 관련이있을 수 있습니까? 매번 루프 후에 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_Query통해global $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; 
            ?> 

0

페이지 매김을 포함한 전체 게시물을 계산하는 간단한 방법

<?php  global $wp_query
   echo $wp_query->found_posts; ?>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.