워드프레스 메인 index 페이지와 아카이브별 보여지는 글 개수 조정하는법

워드프레스에 적응해 사이트나 블로그를 꾸려나가다 보면, 머리로는 기가 막히는 아이디어가 떠 올랐지만 그걸 실현해낼 코딩 능력이 부족한 현실과 자주 마주친다.

오늘도 사이트의 메인 페이지와 카테고리 혹은 아카이브 페이지에서, 기본적으로 전부 10개로 설정되어 있는 ‘페이지 당 보여줄 글의 개수’를 각각 다르게 설정하고 싶은 아이디어가 떠올랐고, 이에 대한 코딩을 실제로 사용해본 뒤 사용법과 활용법을 공유한다. 굉장히 유용하다.

워드프레스 사이트 메인 페이지 ‘index.php’만 페이지 당 보여줄 글의 개수 바꾸기

페이지 당 보여줄 글의 개수를 바꾸는 방법을 검색해보면 일단 자료도 별로 없지만, 간혹가다 보이는 정보들도 굉장히 복잡하고 비효율적이었다.

때문에 가장 간단하게 수정하고자 원했고, 그래서 찾아낸 게 바로 워드프레스 자체 API였다. 보통 워드프레스에서 직접 제공하는 코드를 fuction.php와 함께 사용하면, 가장 안정적이고 가벼우면서 쉽게 원하는 효과를 얻을 수 있다.

그래서 페이지 글 관련 워드프레스 공식 문서에서 원하는 코드를 찾아냈고, 그 코드는 아래와 같다.

function hwl_home_pagesize( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_home() ) {
        // Display only 1 post for the original blog archive
        $query->set( 'posts_per_page', 1 );
        return;
    }

    if ( is_post_type_archive( 'movie' ) ) {
        // Display 50 posts for a custom post type called 'movie'
        $query->set( 'posts_per_page', 50 );
        return;
    }
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );

코드를 설명하자면, 첫 번째 문단은 글 개수 관련 함수를 시작한다는 뜻이고, 두 번째 빨간색으로 칠한 ‘is_home’ 로 시작하는 부분이 메인 페이지, 즉 index.php의 페이지 당 보여줄 글 개수를 조절하는 부분이다.

빨간색으로 칠한 숫자 ‘1’ 부분이 메인 페이지에서 보여줄 글 개수를 조절하고, 예시 코드대로 입력한다면 메인 페인지에서만 1개의 글이 보이게 된다. 그 외의 페이지에선 ‘워드프레스 관리자 페이지’ > ‘설정’ > ‘읽기’ > ‘페이지 당 보여줄 글의 개수’ 에서 설정한 대로 그대로 보여진다.

세 번째 파란색으로 칠한 ‘movie’ 부분은 아카이브 페이지에서 보여줄 글 개수를 정의한다.

저 ‘movie’ 부분에 적용시킬 아카이브 명을 입력하고, 그다음 파란색 ’50’ 부분의 숫자를 해당 아카이브에서 보여줄 글 개수로 설정하면 된다.

설정하고 싶은 아카이브를 추가하고 싶다면, 세 번째 코드 부분만 계속해서 생성하면 된다, 이런 식으로 말이다

function hwl_home_pagesize( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_home() ) {
        // Display only 1 post for the original blog archive
        $query->set( 'posts_per_page', 1 );
        return;
    }

    if ( is_post_type_archive( 'movie' ) ) {
        // Display 50 posts for a custom post type called 'movie'
        $query->set( 'posts_per_page', 50 );
        return;
    }

    if ( is_post_type_archive( 'picture' ) ) {
        // Display 50 posts for a custom post type called 'movie'
        $query->set( 'posts_per_page', 50 );
        return;
    }
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );

그리고 개꿀몬처럼 메인 페이지의 글 개수만 조절하면 되는 상황이라면, 쓸모없는 부분은 다 지우고 아래와 같은 코드만 사용해도 된다.

function hwl_home_pagesize( $query ) {
    if ( is_admin() || ! $query->is_main_query() )
        return;

    if ( is_home() ) {
        // Display only 1 post for the original blog archive
        $query->set( 'posts_per_page', 1 );
        return;
    }
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );

메인 페이지의 보여줄 글 개수를 조절하는 이유와 활용법

보통 메인 페이지의 글 개수를 조절하는 이유는, 메인 페이지에서 포스팅 말고도 여러 가지 요소를 노출시키고 싶거나, 매거진 형식으로 인덱스 페이지를 꾸미고 싶을 때 활용할 수 있다.

현재 GKKmon.com 메인 페이지도 최상단에는 기능 도구들을, 그다음은 2개의 새로운 포스트를 노출시키고, 그다음은 카테고리별 문서들을 나열해 매거진과 정보매체의 속성을 적당히 혼합시켜서 사용 중이다.

위와 같은 방식으로 본인 입맛에 따라 자유자재로 활용해 메인페이지를 꾸려볼 수 있다.