커스텀 쿼리로 post나 page 를 출력할 때 한 페이지에 출력하고 남은 나머지 쿼리들은 페이지 이동을 통해 불러올 수 있도록 한다.
흔히 pagination 또는 paginate 라고 하는데
한 페이지에 출력하고 남은 다음 쿼리를 페이지를 이동하며 불러올 수 있도록 하는 기능이다.
먼저 커스텀 쿼리에 paged 파라미터를 추가한다.
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
'post_type' => 'post',
'orderby' => 'date',
'order' => 'ASC',
'posts_per_page' => 2,
'paged' => $paged,
);
$the_query = new WP_Query($args);/code>
페이지를 출력하기 위한 방법은 wordpress 에서 제공하는 함수 paginate_links() 를 이용한다.
WordPress CODEX 에서 paginate_links() 에 대한 내용은 확인해볼 수 있다.
쿼리가 끝나갈 무렵에 코드를 추가한다.
여기서 주의할 점은 코드 삽입의 위치인데 while 문이 끝나고 if 문이 끝나기 전에 삽입해야 한다.
$total_pages = $the_query->max_num_pages;
echo '<div class="pagination-section">';
$current_page = max(1, get_query_var('paged'));
echo paginate_links( array (
'base' => get_pagenum_link(1) . '%_%',
'format' => '/page/%#%',
'total' => $total_pages,
'current' => $current_page,
'prev_text' => __('« Previous'),
'next_text' => __('Next »'),
) );
echo '</div>';