[워드프레스] 사이트맵에서 포스트나 페이지 제외하기

워드프레스는 5.5 버전 부터 엔진 자체적으로 사이트맵을 제공하기 시작했습니다.

기존에는 젯팩이나 다른 플러그인을 이용해서 사이트맵을 만들곤했었는데, 이제 워드프레스 엔진 자체적으로 사이트맵을 제공하니 아주 편리하죠.

그런데 아주 기본적인 기능만 제공하다보니 커스터마이징을 어떻게 해야하나 고민이 생깁니다.

아래는 여러 커스터마이징 중 하나인 워드프레스 자체 엔진 사이트맵에서 포스트, 페이지 또는 사용자 정의 포스트 타입을 제외하는 방법입니다.

function remove_post_type_on_wp_sitemap( $post_types ) {
    unset( $post_types['post'] );
    unset( $post_types['page'] );
    unset( $post_types['cpt_name'] );
    return $post_types;
}
add_filter( 'wp_sitemaps_post_types', 'remove_post_type_on_wp_sitemap', 10, 2 );

위 코드를 적절하게 수정해서 테마나 플러그인에 넣어주면 됩니다.

코드를 간단하게 정리하자면, wp_sitemaps_post_types 함수에 필터를 걸어주는데 $post_types 라는 변수에 담겨 있는 여러가지 포스트 타입 중 사이트맵에서 제외하고 싶은 포스트 타입을 unset 해주는 것입니다.

post 나 page 등 기본적으로 존재하는 포스트 타입은 물론이고 사용자가 직접 만든 포스트 타입을 제외 할 수도 있습니다.

끝.