카테고리 아카이브 페이지 제목에서 분류 이름 제거나 변경 또는 정보 추가하기

보통의 워드프레스 테마는 카테고리(category)나 태그(post_tag)와 같은 분류(taxonomy) 아카이브 페이지 제목에 분류명과 함께 해당 분류의 term 이름을 출력합니다. 그런데, 일부 사용자는 ‘카테고리’ 분류명을 제거하길 원합니다.

분류명 카테고리와 Uncategorized term 이름이 함께 출력

카테고리 분류명 제거

아카이브 페이지에서 그림처럼 분류명과 term 이름이 나오는 것은 보통 다음 코드를 테마에서 정의하기에 나오는 결과로 볼 수 있습니다.

// 테마 2016 (twentysixteen)의 archive.php 파일
the_archive_title( '<h1 class="page-title">', '</h1>' );
the_archive_description( '<div class="taxonomy-description">', '</div>' );

따라서, 다음처럼 필터를 사용하여 코드를 정의하면 간단하게 분류명을 제거할 수 있습니다. 코드를 functions.php 파일 등에 추가하고 저장하면 됩니다.

add_filter( 'get_the_archive_title', function ( $title ) {
    if( is_archive() ) {
        $title = single_cat_title( '', false );
    }
    return $title;
});

2번 줄 is_archive 조건 태그(함수) 대신에 is_category 조건 태그 또는 태그 아카이브 페이지일 때의 is_tag를 사용해도 되지만,  카테고리나 태그 분류에 제한하므로 더 범용적인 is_archive 조건 태그를 사용한 것입니다. 세부 정의를 원한다면 각 조건 태그를 사용하면 됩니다.

3번 줄은 다음처럼 single_term_title 함수를 사용해도 되는데, 역시 조금 더 범용적이라 볼 수 있습니다.

//
$title = single_term_title( '', false );

카테고리나 태그 아카이브 페이지는 다음 그림처럼 분류명이 제거된 제목이 출력됩니다.

분류명이 제거된 아카이브 페이지 제목

분류명 변경

앞의 코드에서 짐작할 수 있듯, 분류명을 제거하지 않고 변경하고 싶다면 다음처럼 출력하고 싶은 이름을 입력하면 됩니다.

add_filter( 'get_the_archive_title', function ( $title ) {
    if( is_archive() ) {
        $title = single_cat_title( '구분 &raquo ', false );
        //$title = single_term_title( '구분 &raquo ', false );
    }
    return $title;
});

분류명을 변경한 아카이브 페이지 제목

Author 아카이브 페이지

Author 아카이브 페이지 제목 기본

앞의 코드에는 모두 is_archive 조건 태그를 기준으로 정의하였는데, 위 코드를 사용하면 author 아카이브 페이지에는 제목이 출력되지 않습니다. Author 아카이브 페이지도 is_archive 조건을 가지지만, 포스트 작성자의 이름은 분류의 term이 아니므로 출력되지 않습니다. 다음 코드는 author 아카이브 조건을 추가한 것입니다.

add_filter( 'get_the_archive_title', function ( $title ) {
    if( is_archive() ) {
        $title = single_cat_title( '', false );
        //$title = single_term_title( '', false );
    }
    elseif( is_author() ) {
        $title = get_the_author( '', false );
    }
    return $title;
});

위의 코드로도 author 아카이브 페이지에는 페이지 제목이 출력되지 않는데, author 아카이브 페이지가 is_archive, is_author 조건 태그를 모두 가지기 때문으로, 다음처럼 변경합니다.

add_filter( 'get_the_archive_title', function ( $title ) {
    if( is_archive() && !is_author() ) {
        $title = single_cat_title( '', false );
        //$title = single_term_title( '', false );
    }
    elseif( is_author() ) {
        $title = get_the_author( '', false );
    }
    return $title;
});

Author 아카이브 페이지 제목 변경

아카이브 페이지 제목에 데이터 추가

아카이브 페이지 제목과 함께 다양한 데이터를 출력할 수 있는데, 간단하게 각 분류의 포스트 개수를 출력하려면 다음 코드로 정의할 수 있습니다.

add_filter( 'get_the_archive_title', function ( $title ) {
    global $wp_query;
    $query_post_count = ' <small>(' . $wp_query->found_posts . ')</small>';
    if( is_archive() && !is_author() ) {
        $title = single_cat_title( '', false ) . $query_post_count;
        //$title = single_term_title( '', false ) . $query_post_count;
    }
    elseif( is_author() ) {
        $title = get_the_author( '', false ) . $query_post_count;
    }
    return $title;
});

아카이브 페이지 제목과 쿼리 포스트 개수 출력

Author 아카이브 페이지의 제목에도 해당 author의 포스트 등록 개수가 출력됩니다.

저장소 플러그인

직접 코드 추가가 어렵다면 Custom Archive Titles 같은 저장소 플러그인을 사용할 수 있습니다.

플러그인 Custom Archive Titles

참고

아카이브 페이지 제목의 분류명을 제거하길 원하는 것은, 카테고리가 사이트 전체 포스트를 구분하는 유일한 기술의 방법이므로 ‘카테고리’ 이름은 의미가 없고, ‘태그’는 ‘꼬리표’ 정도의 단어 뜻에 한정하고 있기에 제거하고 싶을 수 있다, 라고 가늠합니다.

그러나, 카테고리와 태그는 계층 또는 비계층의 term 선택 방식의 차이에 불과하며, 이런 차이를 두어 워드프레스가 기본으로 제공하는 ‘분류의 하나’라고 기준을 다시 세우는 게 좋습니다. 그리고, 분류의 이름도 데이터이므로 분류 이름 출력이 혹시 아름다운 사이트 구성에 지장을 주지 않을까 염려하지 않는 게 좋습니다. 분류 이름이 있어야 방문자들이 정보를 파악하는 데 도움이 됩니다.