• 미분류

워드프레스 블로그 feed(RSS) 발행시간 지연 방법

워드프레스 블로그에서 포스트를 발행하면 곧바로 RSS feed가 발행됩니다. 글에 오류가 있거나 부정확한 표현이 있거나 사소한 맞춤법 오류까지 포함해 발행한 뒤에라도 고쳐야 할 상황은 자주 있습니다. 뭔가 문제가 있는 피드를 내보내기 전에 한 번 더 점검할 시간을 벌 수 있는 팁을 발견했습니다.

워드프레스 블로그를 운영한지 한 3년 넘게 되는데, 2년 쯤 전부터 사실상 관리에 손을 놓고 있다가 보니 RSS(feed) 발행에 심각한 문제가 있었습니다. 이 문제를 해결하려고 사흘동안 애를 쓰는 동안 아주 재밌는 꿀팁을 발견했습니다. 나도 유용하게 쓰겠지만, 이런 꿀팁은 공유해야하는 것이겠지요.

WP Engineer 여기서 발견한 팁입니다. 내가 정한 시간만큼 뒤에 피드를 발행하게 하는 건데요, 대체로 5분에서 10분정도 지연하면 되지 않을까 싶습니다. 저는 10분 지연하는 것으로 설정했습니다.

비밀은 워드프레스 테마에 있는 테마함수(functions.php 또는 function.php)에 있습니다. 테마에 따라 functions.php로 쓰기도 하고 function.php를 쓰기도 합니다. 하여튼 한글판 워드프레스 기준으로 외모->테마편집기에 들아가서 보면 오른쪽에 테마에 필요한 각종 php 파일과 css 파일을 직접 편집할 수 있습니다.

여기서 functions.php 파일을 열어 아래 코드를 맨 아래쪽 “?>” 위쪽에 넣어주면 됩니다.


/** * puplish the content in the feed later * $where ist default-var in WordPress (wp-includes/query.php) * This function an a SQL-syntax */ function publish_later_on_feed($where) { global $wpdb;if ( is_feed() ) { // timestamp in WP-format $now = gmdate('Y-m-d H:i:s');// value for wait; + device $wait = '5'; // integer// http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff $device = 'MINUTE'; //MINUTE, HOUR, DAY, WEEK, MONTH, YEAR// add SQL-sytax to default $where $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait "; } return $where; } add_filter('posts_where', 'publish_later_on_feed');

의미를 살펴보면 디비에서 발행 날짜와 시간을 가져온 뒤 $wait + $device 만큼 지연 후 피드를 발행하라는 것입니다. @wait에는 아라비아 숫자가 들어가면 되고 $device에는 분, 시간, 일, 주, 달, 년 중 필요한 것을 선택해서 넣어주면 됩니다. 설마 1년 후 피드를 발행하라고 할 일이야 있겠습니까만, 하려고만 마음 먹으면 100년 후에 피드를 발행하게 할 수도 있습니다. 물론, 100년 후 그 피드를 구독할 사람이 있을지, 그 RSS를 수집할 데가 있을지는 저도 장담할 수는 없지만 말입니다.

다음 블로거뉴스->다음뷰가 서비스를 종료한 뒤로 메타블로그도 많이 시들해졌습니다. 하지만 여전히 RSS로 블로그 정보를 모아서 서비스 하는 곳은 제법 있습니다. 대표적(?)인 곳이 갱블 같은 데가 있죠.

내가 헤맸던 것은 내가 쓴 글이 메타블로그로 전송되면 실제 발행시간보다 정확히 9시간 전에 발행한 것으로 전달되면서 새 글이 9시간 전에 발행된 낡은 글이 돼 버리는 문제가 있었기 때문입니다. 워드프레스는 피드를 GMT(세계 표준시) 기준으로 발행합니다. 그리고 워드프레스는 (표준설치를 가정했을 때) wp-includes 폴더 아래 feed로 시작되는 예닐곱개 파일과 rss.php 파일에서 피드 발행을 설정하고 있습니다. 이들 파일을 쪼물딱거린다고 사흘을 헤맸는데 문제는 다른 곳에 있었습니다. 예전 갱블을 만들 때 겪었던 문제였느데 이글루스 블로그도 피드를 표준시 기준으로 발행하고 있었습니다. 이를 읽어와서는 한국 표준시(세계표준시 +9시간)에 맞춰줘야 했는데 그걸 안하다 보니 계속 예전에 발행된 낡은 글로 처리되는 것을 해결하느라 애를 먹었었죠.

결국은 발행쪽의 문제가 아니라 받아오는 쪽에서 이를 적절히 처리해야 했는에 이번에 내가 겪은 문제도 그런 것이었습니다.

만약 워드프레스 블로그 글이 메타블로그에 정확히 9시간 이전에 발행된 것으로 전달된다면 골머리 썩히지 말고 메타블로그 관리자에게 사정을 설명하고 이를 한국시각으로 바꿔달라고 요청하면 됩니다.

디지로그

축구가 좋은 축구입니다.

%d 블로거가 이것을 좋아합니다: