워드프레스 테마 무료 버전에서 페이지네이션 기능을 제한할때 해볼만한 해결책

Posted on

워드프레스 테마가 유료와 무료로 나누어진 경우 페이지네이션 기능을 제한하기도 합니다. 유료 버전이 없는 경우에도, 때로 숫자로 된 페이지네이션이 아닌 경우에 이 글에서 제시하는 방법이 통하기도 할 것입니다. 페이지네이션 기능 기본값이 제한적인 테마를 고치는 요령입니다.

우선 워드프레스에서 포스트 표시할때 어떤 원리인지 알면 좋습니다.

워드프레스 테마에서 포스트 표시는 여러개의 포스트를 표시할때 아래와 같은 구조를 가집니다.

<?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 설정도 하면 좋습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다