
1. 워드프레스 예약글은 왜 실패할까요?
워드프레스는 WP-Cron이라는 자체적인 예약 시스템을 사용합니다. ‘크론(Cron)’은 컴퓨터가 정해진 시간에 자동으로 특정 작업을 실행하도록 하는 기능인데요. 워드프레스의 WP-Cron은 일반적인 서버 크론과 조금 다릅니다.
WP-Cron은 기본적으로 누군가 내 블로그에 접속해야만 작동하도록 설계되어 있어요. 방문자가 적은 시간대에는 예약 발행이 실패할 확률이 높습니다. 하지만 꼭 방문자가 있어야만 작동하는 것은 아니며, 서버 내부의 요청이나 플러그인, API 호출로도 트리거될 수 있습니다.
주요 예약 실패 원인
- WP-Cron 작동 문제: 방문자가 없거나, 서버의 PHP 설정(
max_execution_time등) 제한 때문에 정상적으로 실행되지 않는 경우입니다. - 플러그인 충돌: 캐시나 보안 플러그인이 WP-Cron 요청을 차단하여 문제가 발생할 수 있습니다.
- CDN/방화벽 문제: Cloudflare 같은 CDN(콘텐츠 전송 네트워크)이나 웹 방화벽(WAF)이
wp-cron.php요청을 스팸이나 봇으로 오인하여 차단하는 경우도 있습니다. - 시간대 불일치: 워드프레스 ‘설정 > 일반 > 시간대’와 서버의 실제 시간대가 일치하지 않아 예약 시간이 어긋나는 경우도 있습니다.
2. 가장 확실한 해결책: 서버 크론 설정하기
WP-Cron의 불안정함을 해결하는 가장 좋은 방법은, 서버 자체의 진짜 ‘크론(Cronjob)’을 사용하는 것입니다.
서버 크론은 방문자 수와 관계없이 정해진 시간에 무조건 실행되는 튼튼한 시스템이에요. 워드프레스 블로그가 놓치는 예약 글 없이 안정적으로 발행되게 하려면, 서버 크론을 설정하는 것이 가장 좋습니다. 이 방법은 조금 어려워 보일 수 있지만, 한 번만 제대로 설정해두면 워드프레스 예약글 문제가 싹 사라집니다.
3. Cloudways에서 서버 크론 설정하는 방법 (단계별 가이드)
만약 Cloudways를 사용하고 있다면, 서버 크론 설정은 생각보다 훨씬 간단합니다. Cloudways 대시보드에서 몇 번의 클릭과 간단한 코드 입력만으로 해결할 수 있습니다.
3-1. 워드프레스의 WP-Cron 기능 비활성화하기
서버 크론과 WP-Cron이 중복으로 작동하지 않도록, 먼저 워드프레스 자체의 크론 기능을 꺼두는 작업부터 시작합니다.
1. Cloudways 대시보드에 로그인한 후, 왼쪽 메뉴에서 **’Applications’**를 클릭하고 본인 블로그를 선택합니다.
2. 왼쪽 메뉴에서 **’Application Settings’**를 누릅니다.
3. ‘Application Credentials’ 탭에서 **’Manage Files’** 버튼을 클릭하여 파일 관리 시스템에 접속합니다.
4. `wp-config.php` 파일을 찾아 편집합니다.
5. 파일 내용 중 `/* That’s all, stop editing! Happy publishing. */` 바로 위에 다음 코드를 추가하고 저장합니다.
define('DISABLE_WP_CRON', true);
주의: 일부 플러그인(예: 예약 이메일 발송, 자동 백업)이 WP-Cron을 활용합니다. 이 코드를 추가한 후 모든 크론 이벤트가 서버 크론으로 제대로 대체되는지 반드시 확인하는 것이 좋습니다.
3-2. Cloudways에 크론 작업 등록하기
이제 5분마다 한 번씩 예약 글을 확인하도록 서버에 명령을 내릴 차례입니다.
1. Cloudways 대시보드 왼쪽 메뉴에서 **’Cron Job Management’**를 클릭합니다.
2. **’Add New Cron Job’** 버튼을 누릅니다.
3. 설정 화면에서 다음 정보를 입력합니다.
* **Common Settings:** `Every 5 minutes`를 선택합니다.
* **Command:** 아래 코드 중 하나를 입력하는데, 이때 **your-domain.com** 부분은 반드시 본인 블로그의 도메인 주소로 바꿔야 합니다.
(wget 방식)
wget https://your-domain.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
(curl 방식)
curl -s https://your-domain.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
> /dev/null 2>&1은 에러 메시지를 포함한 모든 출력 내용을 무시하는 옵션입니다. 서버 로그가 불필요하게 쌓이는 것을 방지해 줍니다.
4. 모든 설정이 끝났다면 **’Save Changes’** 버튼을 누릅니다.
이제 서버가 5분마다 알아서 예약 글을 확인하고 발행해줄 겁니다. 더 이상 워드프레스 예약글이 실패할까 노심초사하지 않아도 돼요!
4. 만약 이 방법으로도 해결되지 않는다면?
대부분의 경우 위 방법으로 문제가 해결되지만, 혹시 그래도 워드프레스 예약글이 실패한다면 다음 사항들을 추가로 확인해 보세요.
- Cloudways Cron Optimizer 기능 활성화: Cloudways 대시보드 > **’Application Settings’** 메뉴에서 ‘Cron Optimizer’ 기능을 활성화하면 예약 작업의 신뢰성을 더 높일 수 있습니다.
- 시간대 설정 확인: 워드프레스 ‘설정 > 일반’에서 ‘시간대’가 한국 시간(서울)으로 정확하게 설정되어 있는지 확인하세요.
- PHP 환경 변수 점검: 서버의 PHP
max_execution_time이 너무 낮게 설정되어 있으면 작업이 중간에 중단될 수 있습니다. 서버 관리자에게 문의하여 조정이 가능한지 확인해 보세요. - 캐시 플러그인 예외 설정: 사용하는 캐시/보안 플러그인 설정 메뉴에서 `wp-cron.php` 경로가 차단되지 않도록 예외 처리가 필요합니다.
- 보조 플러그인 활용: 임시 해결책으로 Scheduled Post Trigger 또는 WP Crontrol 같은 플러그인을 사용하여 예약 발행 문제를 보완할 수 있습니다. WP Missed Schedule Posts 같은 플러그인도 있지만, 사용 전 워드프레스 공식 지원 여부와 최근 업데이트 내역을 확인하는 것이 좋습니다.
5. 자주 묻는 질문 (FAQ)
Q. 무료 체험용 Cloudways 서버도 이 방법이 통하나요?
A. 네, 유료 서버와 동일하게 서버 크론 기능을 사용할 수 있습니다. 다만, 무료 서버는 리소스가 제한적이라 많은 크론 작업을 동시에 실행하면 약간의 지연이 생길 수 있다는 점을 참고해 주세요.
Q. 서버 크론 설정 후 예약 글을 확인하려면 어떻게 하나요?
A. Cloudways 대시보드 ‘Cron Job Management’ 메뉴에서 ‘View all scheduled cron jobs’를 클릭하면 등록된 모든 작업을 확인할 수 있습니다.