워드프레스 테마가 유료와 무료로 나누어진 경우 페이지네이션 기능을 제한하기도 합니다. 유료 버전이 없는 경우에도, 때로 숫자로 된 페이지네이션이 아닌 경우에 이 글에서 제시하는 방법이 통하기도 할 것입니다. 페이지네이션 기능 기본값이 제한적인 테마를 고치는 요령입니다.
우선 워드프레스에서 포스트 표시할때 어떤 원리인지 알면 좋습니다.
워드프레스 테마에서 포스트 표시는 여러개의 포스트를 표시할때 아래와 같은 구조를 가집니다.
<?php
if (have_posts()) :
the_post();
while (have_posts()) :
...제목과 내용 표시 코드
endwhile;
페이지네이션 코드
endif;
?>
주목할 부분은 have_posts()를 조건문과 루프에 넣고 여러개의 포스트를 표시하는 블락 설정입니다.
if 와 endif; 사이에 페이지네이션 코드를 추가하면 글 개수와 한페이지당 표시 개수 설정을 읽어들여 페이지네이션 링크를 표시합니다.
워드프레스 내장 템플릿 태그로는 https://codex.wordpress.org/Pagination 이 문서에 나열된 태그를 쓰면 되구요.
테마에 따라서는 튜닝을 한 태그를 자체적으로 만들어 제공합니다. 이 경우, 테마 제작사측이 지정한대로 작동에 변화가 주어져서 유료 버전에서만 작동하게 할 수도 있는데요.
테마를 열어보고 해당 페이지네이션 태그를 the_posts_pagination() 으로 바꾸면 무료 버전에서도 페이지네이션이 표시되게 할 수 있습니다. (막아두지만 않았다면요)
우선 index.php, search.php, archive.php 를 살펴보시면 if (have_posts()) 안쪽 거의 아래 부분에 navigation이나 pagination과 같은 단어가 들어간 태그가 보이실 것입니다. 이들 코드를 제작사측에서 제공한 태그로 간주하고 the_posts_pagination() 태그로 대체하고 테마를 불러와서 글 목록을 불러와봅니다. (카테고리 항목을 클릭하는 등의 방법) 워드프레스 설정에서 지정한 페이지당 글 표시 개수보다 작성한 글 개수가 많으면 페이지네이션이 표시될 것입니다. 그러면 성공입니다.
제가 쓰는 테마의 경우 index.php 를 예로 들면 아래처럼 되어있습니다.
<?php get_header(); ?>
<div id="page" class="home-page">
<div id="content" class="article">
<?php if ( have_posts() ) :
$feather_magazine_full_posts = get_theme_mod('feather_magazine_full_posts');
while ( have_posts() ) : the_post();
feather_magazine_archive_post();
endwhile;
feather_magazine_navigation();
endif; ?>
</div><!-- .article -->
<?php get_sidebar(); ?>
</div>
<?php get_footer(); ?>
이 코드에서 feather_magazine_navigation() 태그를 the_posts_pagination() 으로 바꿨구요. 이를 search.php와 archive.php 에도 해둡니다. CSS는 테마 기본 CSS가 워프 기본 페이지네이션 속성에 맞게 되어 있으면 따로 지정안해도 되구요. 아니라면 따로 CSS 설정도 하면 좋습니다.