안녕하세요. wp_query를 이용해서 페이지를 하나 만들고 있습니다.
문제에 부딪혀 조언을 받을 수 있을까 해서 글을 남겨봅니다.
현재, custom-post-type : book 을 만들었고 이 book posts에는 meta-key로 'book_date'가 있으며, 이 값은 '2000-01-12'의 형태인 string 값입니다.
일단
$args = array(
'post_type' => 'book',
'posts_per_page' => 3,
'meta_query' => array(
array(
'key' => 'book_date',
'value' => '2018-01-01',
'compare' => '>=',
),
),
'orderby' => array(
'race_date' => 'ASC',
),
);
$query = new WP_Query($args);
while($query->have_posts() ) : $query->the_post();
$race_data = get_post_meta( get_the_ID(), 'race_date', true );
$post->num = 0; ?>
<h4>title : <?php the_title(); ?> </h4>
<p>index : <?php echo($query->current_post); ?> </p>
<?php endwhile; wp_reset_query(); ?>
<button class="load_more">더보기 </button>
위와 같은 형태의 wp_query 가 들어갑니다. (첫 페이지)
여기에서, '더보기' 버튼을 클릭하면, ajax로 다음페이지의 book posts( 같은 커스텀포스트타입의 글들) 들이 불려저 나옵니다.
ajax로 아래의 wp_query의 내용이 붙여집니다.
$args = array(
'post_type' => 'book',
'posts_per_page' => 3,
'paged' => 2,
'meta_query' => array(
array(
'key' => 'book_date',
'value' => '2018-01-01',
'compare' => '>=',
),
),
'orderby' => array(
'race_date' => 'ASC',
),
);
$query = new WP_Query($args);
while($query->have_posts() ) : $query->the_post();
$race_data = get_post_meta( get_the_ID(), 'race_date', true );
$post->num = 0; ?>
<h4>title : <?php the_title(); ?> </h4>
<p>index : <?php echo($query->current_post); ?> </p>
<?php endwhile; wp_reset_query(); ?>
paged = 2만 추가 되었습니다. 내용은 정상적으로 나옵니다. 하지만 여기서 문제는, 저 위에 있는 index 값입니다.
wp_query의 프로퍼티로 있는 current_post를 이용해 index값을 나타냈는데, 이 값은 첫 post 부터 0,1,2,3.. 이렇게 나갑니다.
하지만, ajax로 붙여진 2페이지, 도 index값이 처음부터 0,1,2,3... 이렇게 나가더라구요. 이 index 값으로 간단한 코딩을 해야할 것 같은데,
ajax로 덧붙여진 페이지의 book-posts들도 첫페이지의 book-posts에 이어 index값을 이어 나가게 할 수는 없을까요?
아니면, ajax로 이어지는 book-post의 이전 book-post의 값을 끌어오는 방법이 있을까요?
감사합니다.
답변 주셔서 감사합니다. 참고해서 수정해볼게요.
즐거운 하루 되세요.
안녕하세요~^^
$index 라는 변수를 따로 만들어서 해보시겠어요?
간단한 예제도 알려드립니다.
<?php
$index = $posts_per_page * ($paged-1);
// $paged 값이 2일 경우
// 3 = 3 * (2-1)
// $index 값이 하나씩 증가하며 3, 4, 5... 출력
// $paged 값이 3일 경우
// 6 = 3 * (3-1)
// $index 값이 하나씩 증가하며 6, 7, 8... 출력
?>
<p>index : <?php echo $index++?></p>
실제 적용은 조금 손보셔야 할 듯합니다.
고맙습니다.