워드프레스 REST API로 예약 발행을 붙이는 작업은 문서가 잘 되어 있어서 금방 끝납니다. status를 future로, date에 발행 시각을 넣어 POST하면 워드프레스가 알아서 그 시각에 발행합니다. 서버나 스크립트가 계속 떠 있을 필요도 없습니다. 그런데 저는 이 간단한 구조에서 예약이 9시간씩 밀리는 문제를 겪었습니다. 이 글은 그 원인을 추적한 기록입니다.
증상: 18시에 예약했는데 발행이 안 된다
저녁 6시로 예약한 글이 6시가 한참 지나도 future 상태 그대로였습니다. 처음에는 wp-cron이 죽었나 의심했지만, 사이트는 정상이었고 다른 기능도 멀쩡했습니다. 글의 메타데이터를 REST로 직접 확인하고 나서야 원인이 보였습니다.
GET /wp-json/wp/v2/posts/{id}?context=edit
"date": "2026-08-28T18:00:00"
"date_gmt": "2026-08-28T18:00:00" ← 둘이 같다?
date는 사이트 로컬 시각, date_gmt는 UTC입니다. 한국 시간대라면 두 값이 9시간 차이 나야 정상인데 완전히 같았습니다. 사이트 타임존 설정을 확인해 보니 timezone_string이 빈 값, 즉 UTC였습니다. 제가 보낸 18:00은 UTC 18:00으로 해석됐고, 한국 시간으로는 다음 날 새벽 3시였던 겁니다. 발행이 안 된 게 아니라, 제가 생각한 시각이 아직 오지 않았던 겁니다.
더 무서운 사실: 과거 글 전부가 그랬다
설정을 고치기 전에 기존 발행 이력을 확인해 봤습니다. 그 블로그의 지난 글 수십 편이 전부 date와 date_gmt가 동일했습니다. 관리자 화면에는 오후 6:00 발행으로 표시되지만, 실제로는 모두 한국 시간 새벽 3시에 나가고 있었던 겁니다. 몇 달 동안 아무도 몰랐습니다. 관리자 화면의 시각 표기도 같은 타임존 설정을 따르기 때문에, 화면만 봐서는 이 문제를 발견할 수 없습니다.
해결: 설정 한 줄, 그리고 검증
타임존은 REST로도 바꿀 수 있습니다.
POST /wp-json/wp/v2/settings
{"timezone": "Asia/Seoul"}
여기서 사소한 함정이 하나 더 있었습니다. 설정 응답의 필드명이 문서마다 timezone_string으로 나오는 경우가 있는데, 제 환경의 REST 응답 키는 timezone이었습니다. 처음에 timezone_string으로 보냈더니 200이 떨어지면서도 값은 바뀌지 않았습니다. 성공 응답이 곧 반영을 뜻하지 않으므로, 반드시 다시 조회해서 확인해야 합니다.
반영 여부는 임시 글 하나로 검증했습니다. date를 18:00으로 보낸 뒤 date_gmt가 09:00으로 돌아오면 9시간 오프셋이 적용된 것입니다.
보낸 값 date: 2026-09-01T18:00:00
응답 date: 2026-09-01T18:00:00
date_gmt: 2026-09-01T09:00:00 ← 정상
확인 후 임시 글은 삭제했습니다. 참고로 타임존을 바꿔도 기존 글의 date 값은 다시 계산되지 않습니다. 표시 시각이 갑자기 바뀌는 일은 없으니 그 점은 걱정하지 않아도 됩니다.
예약을 넘긴 쪽의 남은 숙제
워드프레스 자체 예약에 발행을 맡기면 한 가지 부작용이 생깁니다. 예약을 걸어 둔 내 쪽 시스템은 발행이 실제로 일어났는지 알 수 없다는 점입니다. 발행 시각이 지나도 로컬 데이터는 여전히 예약 중으로 남아서, 모니터링 화면이 지연으로 오판하게 됩니다.
저는 두 가지로 정리했습니다. 첫째, 발행처에 이미 등록된 예약과 아직 등록되지 않은 예약을 구분해서, 전자는 지연이 아니라 확인 필요로 표시합니다. 둘째, 화면 진입 시 발행처의 실제 상태를 조회해 로컬 상태를 맞추는 동기화를 넣었습니다. status가 publish로 바뀌어 있으면 발행 완료로 반영하는 식입니다.
정리
타임존 문제의 까다로운 점은 코드가 아니라 어디서도 에러가 나지 않는다는 것입니다. API는 200을 돌려주고, 예약은 정확히 등록되고, 발행도 정확히 일어납니다. 다만 서로 다른 시계 기준으로요. 예약 발행을 붙일 때는 시각을 다루는 양쪽의 타임존을 먼저 맞추고, date와 date_gmt의 차이가 기대한 오프셋인지 한 번 확인하는 것을 권합니다. 이 두 가지만 해도 새벽 3시 발행 같은 조용한 사고는 막을 수 있습니다.
다음 글에서는 워드프레스 REST 인증이 401만 돌려줄 때, 비밀번호 문제와 서버 설정 문제를 가려내는 방법을 다루겠습니다.
'자동화·AI 실무' 카테고리의 다른 글
| 워드프레스 REST 401, 비밀번호가 아니라 Authorization 헤더 문제 (0) | 2026.09.08 |
|---|---|
| 티스토리 Open API 종료 후 자동 발행 구축기 (CDP 브라우저 자동화) (0) | 2026.09.04 |
| 구독자 3천 명 채널이 4,295만 조회수를 만든 방법 (0) | 2026.06.28 |
| 유튜브 쇼츠 자동화 방법: 하루 1개 이상 자동으로 업로드하는 시스템 만들기 (1) | 2025.04.14 |
| ImageFX 이미지 상업적 이용 가능할까? 저작권, 라이선스, 그리고 실제 활용 팁까지! (2) | 2025.04.12 |