{"id":5779,"date":"2009-01-26T22:58:46","date_gmt":"2009-01-26T17:28:46","guid":{"rendered":"https:\/\/www.quickonlinetips.com\/archives\/?p=5779"},"modified":"2026-10-28T10:14:10","modified_gmt":"2026-10-28T04:44:10","slug":"future-posted-wordpress-articles-missed-schedule","status":"publish","type":"post","link":"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/","title":{"rendered":"WordPress Missed Schedule Error: Why It Happens and How to Fix It"},"content":{"rendered":"<p>You schedule a post for 9 AM, check your site later and it is not there. In the dashboard the post carries a red &#8220;Missed schedule&#8221; label. This WordPress missed schedule error has caught bloggers out for years, including us: in 2009 several of our future-dated posts never went live while we were travelling. Here is why it happens and how to fix it for good in 2026.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-68368\" src=\"https:\/\/www.quickonlinetips.com\/archives\/wp-content\/uploads\/wordpress-missed-schedule-fix.webp\" alt=\"A red alarm clock on a yellow background, a reminder that scheduled WordPress posts must publish on time\" width=\"1200\" height=\"630\" srcset=\"https:\/\/www.quickonlinetips.com\/archives\/wp-content\/uploads\/wordpress-missed-schedule-fix.webp 1200w, https:\/\/www.quickonlinetips.com\/archives\/wp-content\/uploads\/wordpress-missed-schedule-fix-300x158.webp 300w, https:\/\/www.quickonlinetips.com\/archives\/wp-content\/uploads\/wordpress-missed-schedule-fix-1024x538.webp 1024w, https:\/\/www.quickonlinetips.com\/archives\/wp-content\/uploads\/wordpress-missed-schedule-fix-150x79.webp 150w, https:\/\/www.quickonlinetips.com\/archives\/wp-content\/uploads\/wordpress-missed-schedule-fix-768x403.webp 768w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<blockquote><p><strong>Quick answer:<\/strong> WordPress publishes scheduled posts through WP-Cron, which only runs when someone visits your site. If no visit (or a cached visit) triggers it at the right time, the post misses its schedule. The reliable fix is to disable the built-in trigger with DISABLE_WP_CRON in wp-config.php and set up a real server cron job that calls wp-cron.php every few minutes.<\/p><\/blockquote>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6af2e057aba76\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"ez-toc-cssicon\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #1a202c;color:#1a202c\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #1a202c;color:#1a202c\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6af2e057aba76\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Why_WordPress_missed_schedule_happens\" >Why WordPress missed schedule happens<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Quick_fix_for_a_post_that_already_missed_its_schedule\" >Quick fix for a post that already missed its schedule<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Permanent_fix_use_a_real_server_cron_job\" >Permanent fix: use a real server cron job<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Step_1_turn_off_the_visitor-triggered_cron\" >Step 1: turn off the visitor-triggered cron<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Step_2_add_a_server_cron_job\" >Step 2: add a server cron job<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Step_3_confirm_it_works\" >Step 3: confirm it works<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Check_and_debug_your_cron_events\" >Check and debug your cron events<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#What_changed_since_2009\" >What changed since 2009<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#FAQ\" >FAQ<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#What_does_%E2%80%9CMissed_schedule%E2%80%9D_mean_in_WordPress\" >What does &#8220;Missed schedule&#8221; mean in WordPress?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Is_it_safe_to_disable_WP-Cron\" >Is it safe to disable WP-Cron?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#How_often_should_the_server_cron_job_run\" >How often should the server cron job run?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/01\/future-posted-wordpress-articles-missed-schedule\/#Can_a_caching_plugin_cause_missed_schedules\" >Can a caching plugin cause missed schedules?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Why_WordPress_missed_schedule_happens\"><\/span>Why WordPress missed schedule happens<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>WordPress does not have a clock running in the background. Its scheduler, WP-Cron, checks for due tasks (publishing scheduled posts, sending emails, running backups) when a page on your site is loaded. That causes problems when:<\/p>\n<ul>\n<li><strong>Traffic is low:<\/strong> no visitor arrives near the scheduled time, so nothing triggers the publish.<\/li>\n<li><strong>Pages are cached:<\/strong> a page cache or CDN serves stored HTML, so WordPress itself never runs for that visit.<\/li>\n<li><strong>wp-cron.php is blocked:<\/strong> a security plugin, firewall rule or password protection stops WordPress from calling its own cron file.<\/li>\n<li><strong>The server is busy or briefly down<\/strong> at the exact moment the task should run.<\/li>\n<li><strong>Time zone is wrong:<\/strong> the time zone in Settings &gt; General does not match the time you meant.<\/li>\n<\/ul>\n<p>This is exactly what we saw back in 2009: our server logs showed no real downtime, yet posts set to go live while we were away simply stayed unpublished with this label:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-5780\" src=\"https:\/\/www.quickonlinetips.com\/archives\/wp-content\/uploads\/missed-schedule.gif\" alt=\"WordPress missed schedule label in the posts list\" width=\"172\" height=\"46\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Quick_fix_for_a_post_that_already_missed_its_schedule\"><\/span>Quick fix for a post that already missed its schedule<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>Go to <strong>Posts<\/strong> and open the post marked Missed schedule.<\/li>\n<li>Click <strong>Publish<\/strong> (or set a new future time and click Schedule).<\/li>\n<li>Check <strong>Settings &gt; General &gt; Timezone<\/strong> and choose your city rather than a UTC offset, so the time follows daylight saving changes.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Permanent_fix_use_a_real_server_cron_job\"><\/span>Permanent fix: use a real server cron job<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The official <a href=\"https:\/\/developer.wordpress.org\/plugins\/cron\/hooking-wp-cron-into-the-system-task-scheduler\/\" target=\"_blank\" rel=\"noopener\">WordPress developer handbook<\/a> explains how to hand WP-Cron to your server&#8217;s own task scheduler.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_1_turn_off_the_visitor-triggered_cron\"><\/span>Step 1: turn off the visitor-triggered cron<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Add this line to wp-config.php, above the line that says &#8220;That&#8217;s all, stop editing&#8221;:<\/p>\n<pre><code>define( 'DISABLE_WP_CRON', true );<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Step_2_add_a_server_cron_job\"><\/span>Step 2: add a server cron job<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In your hosting control panel (most have a &#8220;Cron Jobs&#8221; section) or with crontab on a VPS, add a job that loads wp-cron.php regularly. For publishing on time, every 5 or 15 minutes works well, for example:<\/p>\n<pre><code>*\/15 * * * * wget -q -O \/dev\/null https:\/\/example.com\/wp-cron.php<\/code><\/pre>\n<p>Replace example.com with your own site address (include the folder if WordPress lives in one). If your host offers WP-CLI, the command <code>wp cron event run --due-now<\/code> run from your site folder is another option.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Step_3_confirm_it_works\"><\/span>Step 3: confirm it works<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Schedule a test post 20 minutes ahead and check that it goes live without you visiting the site.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Check_and_debug_your_cron_events\"><\/span>Check and debug your cron events<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong><a href=\"https:\/\/wordpress.org\/plugins\/wp-crontrol\/\" target=\"_blank\" rel=\"noopener\">WP Crontrol<\/a><\/strong> lists every scheduled event, shows when it last ran and lets you run or pause events by hand. It is the quickest way to see if WP-Cron is stuck.<\/li>\n<li><strong>Tools &gt; Site Health<\/strong> in WordPress warns when scheduled events are late or failing.<\/li>\n<li>Ask your host whether wp-cron.php is blocked or rate-limited, and whether loopback requests are allowed.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"What_changed_since_2009\"><\/span>What changed since 2009<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When we first wrote about this, we asked WordPress to keep retrying until a missed post went live. WordPress still relies on visits to run WP-Cron, so the problem has not disappeared, especially on cached sites. What has changed is the tooling: the developer handbook now documents the server cron method, Site Health flags late events, and plugins such as WP Crontrol make it easy to see what is going on. For a site that schedules posts regularly, a real cron job is the dependable answer.<\/p>\n<p>WP-Cron also runs other jobs such as <a href=\"https:\/\/www.quickonlinetips.com\/archives\/2020\/05\/auto-update-wordpress-plugins-themes\/\">automatic plugin and theme updates<\/a>, so a reliable cron setup helps those too. On a VPS, see how to <a href=\"https:\/\/www.quickonlinetips.com\/archives\/2009\/08\/change-cron-time-on-vps-cpanel\/\">change cron time in cPanel and WHM<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"FAQ\"><\/span>FAQ<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"What_does_%E2%80%9CMissed_schedule%E2%80%9D_mean_in_WordPress\"><\/span>What does &#8220;Missed schedule&#8221; mean in WordPress?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>It means the scheduled publish time has passed but WordPress did not publish the post, usually because WP-Cron did not run at that time.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Is_it_safe_to_disable_WP-Cron\"><\/span>Is it safe to disable WP-Cron?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Yes, as long as you replace it with a server cron job. If you disable it without a replacement, scheduled posts and other tasks stop running.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_often_should_the_server_cron_job_run\"><\/span>How often should the server cron job run?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Every 5 to 15 minutes suits most blogs. Posts then go live within that window of their scheduled time.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Can_a_caching_plugin_cause_missed_schedules\"><\/span>Can a caching plugin cause missed schedules?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Yes. If cached pages are served without loading WordPress, WP-Cron is not triggered. A server cron job removes that dependence on visits.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You schedule a post for 9 AM, check your site later and it is not there. In the dashboard the&#8230;<\/p>\n","protected":false},"author":4,"featured_media":68368,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[6],"tags":[17],"class_list":["post-5779","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blogging","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/posts\/5779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/comments?post=5779"}],"version-history":[{"count":1,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/posts\/5779\/revisions"}],"predecessor-version":[{"id":68372,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/posts\/5779\/revisions\/68372"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/media\/68368"}],"wp:attachment":[{"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/media?parent=5779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/categories?post=5779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.quickonlinetips.com\/archives\/wp-json\/wp\/v2\/tags?post=5779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}