구글, 빙(Bing), 네이버등의 검색 엔진에서는 사이트 등록과는 별개로 사용자가 능동적으로 블로그나 사이트를 등록할수 있게 웹마스터 도구를 제공하고 있습니다.
이 웹마스터 도구는 사이트맵과 RSS를 해당 검색 엔진에 등록해서 검색 엔진의 크롤링 봇(bot)이 주기적으로 크롤링 될수 있게 하고 RSS 핑으로 신디케이션을 사용해 글을 발행시 검색 엔진에 잘 노출될수 있도록 하는 기능을 하고 있습니다.
이중 국내 검색 엔진 점유율 80% 이상을 차지하고 있는 네이버도 웹마스터 도구를 지원하고 RSS 신디케이션 또한 지원하고 있는데 워드프레스에서 사용하려면 한가지 문제가 생깁니다.
바로 ‘발행 시간’ 이죠. 워드프레스의 설정 – 일반에서 UTC 시간대를 서울로 설정해서 UTC+9를 설정할수 있지만 이 설정은 블로그에서 포스팅되는 발행 시간을 나타내는 옵션이고 실제 RSS 신디케이션을 검색 엔진에 전송시 UTC 표준시로 전송되게 됩니다.
구글 같은 경우는 이런 워드프레스의 구조를 잘 반영하여 워드프레스에 설정된 언어 설정을 읽어 UTC+9의 시간으로 검색엔진에 반영하지만 네이버 같은 경우는 UTC표준시를 그대로 반영하기 때문에 만일 10:00에 글을 발행했다면 네이버에서는 9시간 전인 1:00에 발행한 것으로 등록이 됩니다.
이러한 워드프레스의 동작 구조는 워드프레스의 문서에서도 찾아볼수 있습니다.
익스트림 매뉴얼 같은 테크&팁 위주의 사이트라면 시간에 큰 문제가 되지 않지만 뉴스사이트나 이슈등을 주로 포스팅하는 블로그 같은 경우 이 발행 시간은 치명적인 단점이 됩니다.
이런 RSS UTC 표준시간 문제를 해결하기 위해서 가장 간단한 방법은 워드프레스의 코어 소스 코드를 수정해 주는 것입니다. 수정할 파일은 다음과 같습니다.
- wp-include/feed-rss2.php
- wp-include/feed-rss2-comments.php
<lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0900', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0900', get_post_time('Y-m-d H:i:s', false), false); ?></pubDate>
우선 feed-rss2.php를 열어보면 현재 워드프레스 최신 버전인 4.4.1을 기준으로 45번,89번 라인의 +0000 으로 되어있는 UTC시간을 +0900으로 수정합니다. 그리고 89번 라인에서는 get_post_time 뒤에 true 부분을 false로 변경합니다.
feed-rss2-comments.php 역시 위와 같이 변경합니다.
수정한 다음 글을 발행하고 네이버를 확인하면 한국시간인 UTC+9에 맞춰 시간이 잘 적용되는 것을 확인할수 있습니다.
만일 RSS2 방식이 아닌 atom이나 rdf, RSS1 방식 또한 wp-include 폴더에 있으니 같이 수정해서 사용할수 있습니다.
1 댓글. Leave new
다음같은 경우에는 제 사이트가 블로그로 인식되어있어서 이걸로 잘 해결됐는데, 네이버는 웹문서로 인식해서 해결이 안되네요ㅜㅜ 네이버 사이트맵지우고 rss만 넣어두면 해결될까요?