워드프레스 5.5에서 기본 사이트맵 비활성화하기

Last Updated: 2020년 08월 18일 | | 댓글 남기기

지난 8월 11일 릴리스된 워드프레스 5.5에서는 구텐베르크 인터페이스에 큰 변화가 있었고, 이미지 레이지 로딩(지연 로드), 테마와 플러그인 자동 업데이트 기능이 추가되었습니다. 그리고 SEO 향상을 위해 사이트맵 기능이 기본적으로 탑재되었습니다. 그러나 Yoast SEO, All in One SEO Pack, Rank Math, Slim SEO 등과 같은 SEO 플러그인을 설치한 경우 SEO 플러그인에 사이트맵 기능이 있기 때문에 사이트맵 비활성화 조치를 하지 않으면 워드프레스 기본 사이트맵과 플러그인에서 제공하는 사이트맵 간 충돌이 발생할 가능성이 있습니다.

하지만 대부분의 SEO 플러그인에서는 사이트맵 충돌을 방지하기 위해 워드프레스의 코어 사이트맵을 비활성화하는 기능이 추가된 것 같습니다. Rank Math는 이메일을 통해 워드프레스 5.5과의 호환성을 위해 사이트맵을 비활성화한다는 알림을 보내왔습니다. 다른 SEO 플러그인에서도 워드프레스에서 제공하는 사이트맵 기능이 비활성화되었을 것입니다. 예를 들어, 테스트해보니 AIO SEO Pack에서는 워드프레스 사이트맵 URL로 접근하면 404 에러가 발생하고 Yoast SEO 플러그인에서는 500 Internal Server Error가 발생하고 있습니다.

워드프레스 5.5에서 기본 사이트맵 비활성화하기

워드프레스 기본 사이트맵 비활성화하는 방법

워드프레스 SEO 플러그인에서 제공하는 사이트맵 기능을 사용하는 경우 별다른 조치를 취하지 않아도 사이트맵 플러그인 간 충돌이 발생하지 않을 것으로 보입니다. 워드프레스에서 제공하는 기본 사이트맵 기능을 비활성화해야 하는 경우 테마의 함수 파일에 다음 라인을 추가하면 됩니다.

add_filter( 'wp_sitemaps_enabled', '__return_false' );

그러나 위의 코드는 XML 사이트맵을 숨기는 기능을 할 뿐이고 모든 기능이 여전히 작동한다고 합니다. 영구적으로 WordPress XML 사이트맵 기능을 완전히 제거하려면 테마의 함수 파일에 다음 코드를 삽입할 수 있습니다.

add_action( 'init', function() {\
remove_action( 'init', 'wp_sitemaps_get_server' );\
}, 5 );

코드는 사용 중인 테마의 함수 파일에 추가하되, 꼭 차일드 테마를 만들어 작업하시기 바랍니다. 차일드 테마(자식 테마)가 왜 필요하고, 어떻게 사용해야 하는지 궁금한 경우 "워드프레스 차일드 테마 활용하기" (네이버카페 게시글)를 참고해보세요.

워드프레스 5.5에 포함된 기본 사이트맵

워드프레스 5.5는 버전 숫자에서 짐작할 수 있듯이 대규모 업데이트입니다. 메이저 업데이트 후에 테마나 플러그인 충돌로 인해 사이트가 제대로 작동하지 않는 경우가 발생할 수 있습니다. 중요한 사이트인 경우 며칠 정도 기다렸다가 업데이트를 진행하는 것도 괜찮은 방법입니다. 실제로 워드프레스 5.5 릴리스 전후에 많은 테마(예: 뉴스페이퍼, 주피터, 엔폴드, Flatsome, Bridge ...)와 플러그인(예: Slider Revolution)이 버그를 수정하는 업데이트를 내놓았습니다.

워드프레스 5.5에는 사이트가 검색엔진에 더 잘 노출되도록 코어 사이트맵이 포함되어 있습니다. 이 사이트맵은 쿼리 가능한 모든 포스트 타입, 분류, 작성자 아카이브 및 홈페이지에 대하여 생성될 수 있습니다.

워드프레스에서 생성하는 사이트맵 색인에는 최대 50,000개의 사이트맵을 포함할 수 있고, 각 사이트맵은 (필터 가능한) 2,000개 항목을 수용할 수 있습니다. 워드프레스의 기본 사이트맵 주소는 /wp-sitemap.xml입니다. 워드프레스 사이트맵 주소는 robots.txt 파일에 자동으로 추가되므로 검색엔진에서 쉽게 이 사이트맵을 읽을 수 있습니다.

사이트맵 작동을 구성하고 싶은 경우 워드프레스 개발자 팁이 공개한 New XML Sitemaps Functionality in WordPress 5.5 문서를 참고해보시기 바랍니다.

예시: 사용자 정의 사이트맵 추가

add_filter(
    'init',
    function() {
        $provider = new Awesome_Plugin_Sitemaps_Provider();
        wp_register_sitemap_provider( 'awesome-plugin', $provider );
    }
);

예시: 페이지 포스트 타입의 사이트맵 비활성화

add_filter(
    'wp_sitemaps_post_types',
    function( $post_types ) {
        unset( $post_types['page'] );
        return $post_types;
    }
);

예시: post_tag 분류의 사이트맵 비활성화

add_filter(
    'wp_sitemaps_taxonomies',
    function( $taxonomies ) {
        unset( $taxonomies['post_tag'] );
        return $taxonomies;
    }
);

예시: 포스트의 최종 수정일(Last Modified Date) 추가

add_filter(
    'wp_sitemaps_posts_entry',
    function( $entry, $post ) {
        $entry['lastmod'] = $post->post_modified_gmt;
        return $entry;
    },
    10,
    2
);

예시: 특정 포스트를 사이트맵에서 제외

add_filter(
    'wp_sitemaps_posts_query_args',
    function( $args, $post_type ) {
        if ( 'post' !== $post_type ) {
            return $args;
        }
 
        $args['post__not_in'] = isset( $args['post__not_in'] ) ? $args['post__not_in'] : array();
        $args['post__not_in'][] = 123; // 123 is the ID of the post to exclude, 123은 제외할 포스트 (글)의 ID
        return $args;
    },
    10,
    2
);

마치며

SEO 플러그인을 사용하지 않을 경우 별도의 사이트맵 전용 플러그인을 설치할 필요가 없이 워드프레스에서 자체적으로 제공하는 기본 사이트맵을 활용할 수 있습니다. SEO 플러그인을 사용하는 경우에는 기본 워드프레스 사이트맵이 비활성화될 것입니다. 워드프레스 사이트맵을 완전히 비활성화시키고 싶은 경우 본문에 제시된 방법을 이용할 수 있습니다.

워드프레스 5.5는 속도도 개선된 것 같습니다. 가능한 경우 백업을 받은 후에 최신 버전으로 업데이트하시기 바랍니다.

참고


댓글 남기기

Leave a Comment