
🔧 Come risolvere l'errore missed schedule in WordPress: 3 metodi funzionanti
Imposta la sveglia alle otto del mattino perché lunedì va online un post importante. Lo hai preparato nel weekend, lo hai programmato nel pannello di amministrazione di WordPress e sei andato a dormire senza pensieri. Arriva martedì, apri il sito e non è successo niente. Accanto al titolo nel pannello di amministrazione vedi: «Missed schedule».
Ti suona familiare? Solo nell'ultimo anno, i forum di supporto WordPress in lingua russa hanno discusso questo problema più di trecento volte. Il problema non è il pannello di amministrazione, non è l'hosting e non sono i plugin. È una particolarità architetturale di WordPress stesso.
Ecco tre modi per risolverlo una volta per tutte, dal più rapido al più affidabile. Niente formule magiche per il cron, niente modifiche alla cieca a wp-config.php e niente soluzioni del tipo «pubblico tutto a mano».
💡 Panoramica rapida:
- Installa Missed Schedule Post Publisher per la pubblicazione automatica dei post saltati (due minuti per configurarlo)
- Sostituisci WP-Cron con il cron di sistema per una soluzione radicale indipendente dal traffico
- Installa WP Crontrol per un controllo manuale (mostra tutti gli eventi cron e permette di eseguirli manualmente)
Perché WordPress salta i post programmati
WordPress non usa un vero cron di sistema. Si affida invece a un meccanismo chiamato WP-Cron, uno pseudo-cron che si attiva non in base a un timer del server ma quando un visitatore arriva sul sito.
Ecco come funziona. Quando programmi un post per le 09:00, WordPress scrive il task nel database. Ma può eseguire quel task solo se qualcuno visita il sito intorno alle 09:00. Arriva un visitatore, WordPress analizza la lista dei task e pubblica il post. Nessun visitatore, il task rimane lì in sospeso e tu vedi il messaggio «Missed schedule».
Per i siti con 500-1.000 visitatori al giorno, WP-Cron funziona in modo accettabile: quasi sicuramente qualcuno cliccherà al momento giusto. Ma se hai un blog giovane, un progetto di nicchia o pubblichi post di notte (nel tuo fuso orario), WP-Cron fallisce regolarmente. Aggiungi al mix i plugin di caching: WP Rocket, W3 Total Cache o Cloudflare possono servire pagine in cache senza coinvolgere affatto WordPress, quindi i task cron non vengono eseguiti per ore.
Ecco perché l'errore «Missed schedule» è sistemico, non casuale. La soluzione non è riprogrammare il post a mano ma adottare uno dei tre approcci descritti sotto.
I tre metodi coprono scenari diversi. Il primo, installare un plugin leggero di auto-pubblicazione, risolve il problema per la stragrande maggioranza degli utenti in due minuti. Il secondo, passare al cron di sistema, offre un'affidabilità a livello di infrastruttura, indipendentemente dal traffico. Il terzo, un pannello di controllo manuale, è utile per chi vuole vedere ogni task cron per nome ed eseguirlo a mano. Puoi iniziare con il primo e aggiungere il terzo in seguito per la massima tranquillità.

Metodo 1: il plugin Missed Schedule Post Publisher, semplice e affidabile
Il modo più rapido per chiudere questa questione è installare un plugin specializzato. In passato si usava WP Missed Schedule, ma è stato rimosso dalla directory di WordPress.org nel 2017 e la versione su GitHub conteneva una backdoor. Non installarlo per nessun motivo.
L'attuale sostituto è Missed Schedule Post Publisher. Questo plugin ha un unico scopo: verificare se un post programmato è bloccato e pubblicarlo nel momento in cui viene rilevato.
In cosa si differenzia dal suo defunto predecessore:
Funziona via WP-Cron e contemporaneamente via visite degli utenti; se l'host disabilita WP-Cron, il plugin passa automaticamente all'altra modalità
Intervallo di controllo configurabile: 5, 10, 15, 20, 30 o 60 minuti
Impatto zero sulle performance (una query leggera sul database)
Compatibile con WP Rocket, W3 Total Cache e Cloudflare
Non crea un'inondazione di eventi cron extra; controlla solo le pubblicazioni saltate
L'installazione è standard: Plugin → Aggiungi nuovo → cerca «Missed Schedule Post Publisher» → Installa → Attiva. Dopo l'attivazione, vai su Impostazioni → Missed Schedule Post Publisher e scegli l'intervallo di controllo. Per la maggior parte dei siti, 10-15 minuti sono ottimali.
Il plugin non richiede supervisione manuale. Installalo, imposta l'intervallo e verifica il risultato dopo un giorno: vai su Post → Tutti i post e controlla che l'etichetta «Missed schedule» sia sparita. Da quel momento funziona in silenzio e in modo affidabile.
Per confronto, il vecchio WP Missed Schedule (rimosso dalla directory di WordPress.org nel 2017, e la versione su GitHub conteneva una backdoor) appariva così nel pannello di amministrazione. Se ti capita di vedere questo plugin nella tua lista di plugin installati, cancellalo immediatamente e sostituiscilo con Missed Schedule Post Publisher.

Metodo 2: cron di sistema invece di WP-Cron, una soluzione radicale
Questo metodo è più tecnico ma offre un'affidabilità del 100 percento: disabiliti WP-Cron e agganci la chiamata a wp-cron.php al cron di sistema del server.
Il cron di sistema viene eseguito in base alla schedulazione del sistema operativo, indipendentemente dal traffico del sito. Se imposti un intervallo di 5 minuti, il task viene eseguito esattamente dopo 5 minuti, anche se il sito ha zero visitatori.
Cosa devi fare:
- Apri
wp-config.phpe aggiungi la seguente riga prima di/* That's all, stop editing! */:
1 define('DISABLE_WP_CRON', true);
Questo impedisce a WordPress di eseguire i task cron durante le visite degli utenti. I task stessi non spariscono; rimangono nel database e aspettano una chiamata esterna.
- Nel pannello di controllo del tuo hosting, trova la sezione «Cron Jobs» (cPanel → Cron Jobs, ISPmanager → Scheduler o equivalente). Crea un task con un intervallo di 5-10 minuti e questo comando:
1 wget -q -O - https://your-site.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Se il server supporta PHP CLI, ecco un'alternativa più veloce che non carica il web server:
1 php /home/username/public_html/wp-cron.php
- Salva il task. Dopo 10 minuti, controlla i log del cron; se non ci sono errori, il sistema funziona.
Bonus: disabilitare WP-Cron tramite DISABLE_WP_CRON elimina il ritardo parassitario durante il caricamento delle pagine per i visitatori. WordPress non attiva più i task cron durante la normale navigazione, quindi le pagine si aprono un po' più velocemente.
Questo metodo ha un lato negativo: l'accesso alle impostazioni cron non è disponibile su tutti gli host. Gli hosting condivisi economici a volte bloccano la creazione di task cron. In quel caso, ripiega sul metodo 1; Missed Schedule Post Publisher è stato progettato proprio per queste limitazioni e funziona senza cron di sistema.
Metodo 3: ispezione manuale con WP Crontrol, controllo totale
Il terzo metodo è per chi vuole vedere tutto ciò che accade sotto il cofano. WP Crontrol è un gestore di eventi cron direttamente nel pannello di amministrazione. Non pubblica post da solo, ma mostra quali task sono schedulati, quando avrebbero dovuto essere eseguiti e cosa è andato storto.
Cosa offre WP Crontrol:
Un elenco completo di tutti gli eventi cron con hook, argomenti e orario della prossima esecuzione
La possibilità di eseguire qualsiasi evento immediatamente con un solo clic
Modifica ed eliminazione di eventi cron
Aggiunta di nuovi eventi e schedulazioni personalizzate
Un avviso se il sistema cron non funziona (il server non riesce a connettersi a se stesso)
Dopo l'installazione, vai su Strumenti → Eventi Cron. Vedrai una tabella con tutti i task. Se un post è «bloccato», trova l'evento con l'hook publish_future_post, clicca «Esegui ora» e il post apparirà nel feed entro un secondo.
WP Crontrol è particolarmente utile per il debug: puoi vedere se un plugin ha creato centinaia di eventi cron extra (succede), se la coda dei task è intasata o se c'è un conflitto tra plugin. La colonna «Prossima esecuzione» mostra quando l'evento dovrebbe scattare; se la data è nel passato, il task è bloccato. La colonna «Ricorrenza» indica ogni quanto l'evento si ripete; ricorrenze insolitamente frequenti (ogni minuto) quasi sempre indicano un plugin problematico.
Di per sé, tuttavia, WP Crontrol non previene l'errore «Missed schedule»; aiuta solo a diagnosticare e chiudere manualmente le conseguenze. Dopo aver eseguito manualmente una pubblicazione bloccata, il post va online all'istante, ma la situazione si ripeterà la prossima volta se non affronti la causa a monte con il metodo 1 o 2.

Combinazione migliore: metodo 1 (plugin di auto-pubblicazione) + metodo 3 (WP Crontrol per la supervisione). L'auto-publisher gestisce i post saltati e WP Crontrol ti permette di verificare a colpo d'occhio che la coda cron sia pulita e che tutto funzioni normalmente.
⁉️🤔 Domande frequenti
Perché WordPress non usa un cron normale come qualsiasi altro sistema normale?
Gli sviluppatori di WordPress hanno scelto deliberatamente il modello pseudo-cron perché non richiede configurazione lato server. Un utente installa WordPress su un hosting qualsiasi e la pubblicazione programmata funziona da subito, senza SSH o modifiche ai file di configurazione. Il prezzo di questa comodità è l'inaffidabilità sui siti a basso traffico. WP-Cron viene eseguito a ogni richiesta al sito e, se non ci sono richieste al momento giusto, il task non viene eseguito. È un compromesso architetturale e per i post time-critical non è sufficiente.
Quale metodo dovrei scegliere se non capisco i server?
Missed Schedule Post Publisher (metodo 1). L'installazione richiede due minuti dal pannello di amministrazione; la configurazione consiste nel selezionare un intervallo da un menu a tendina. Niente codice, niente SSH, niente modifiche a
wp-config.php. Il plugin rileva da solo se WP-Cron è abilitato sul server e si adatta.
L'errore potrebbe essere legato al fuso orario di WordPress?
Sì, e verifica questa cosa per prima. Vai su Impostazioni → Generali → Fuso orario e assicurati di aver selezionato il fuso orario corretto della città, non un offset UTC manuale. Un offset UTC+X non tiene conto dell'ora legale; due volte all'anno la programmazione «deriva» di un'ora e i post vengono pubblicati in orari imprevisti.
La cache influisce sui post saltati?
Direttamente, sì. I plugin di caching (WP Rocket, W3 Total Cache, WP Super Cache) e le CDN (Cloudflare) possono servire ai visitatori una pagina HTML già pronta senza avviare affatto il core PHP di WordPress. Se WP-Cron non viene chiamato, i task non vengono eseguiti. Missed Schedule Post Publisher (metodo 1) aggira questo problema funzionando sia via cron sia via visite degli utenti che bypassano la cache. Il cron di sistema (metodo 2) non è affatto influenzato dalla cache.
Cosa devo fare se il mio host blocca la possibilità di creare task cron?
Usa il metodo 1: Missed Schedule Post Publisher. È stato progettato esattamente per questa situazione; funziona tramite il WP-Cron integrato e, se questo è disabilitato, passa automaticamente al controllo sulle visite degli utenti. Non perdi funzionalità; il controllo avviene semplicemente un po' meno frequentemente (alle visite anziché rigorosamente a timer).
Cosa installare oggi
Il problema «Missed schedule» non si risolve con la riprogrammazione manuale; è come verniciare una crepa in un tubo. Ti serve o un plugin di auto-pubblicazione (due minuti, poi te ne dimentichi) o il cron di sistema (un po' più di tempo, poi te ne dimentichi per sempre).
Se hai un tipico blog o sito aziendale su un hosting medio, inizia con Missed Schedule Post Publisher. Imposta un intervallo di 10 minuti, cinque clic nel pannello di amministrazione e la questione è chiusa. Se vuoi garanzie a livello di infrastruttura, configura il cron di sistema. Aggiungi WP Crontrol per la supervisione e ti ricorderai dei post saltati solo nelle conversazioni su «come andavano le cose una volta».
Un giorno dopo l'installazione, entra nel pannello di amministrazione e controlla il post programmato più vicino. Se è andato online in orario, il sistema funziona. In caso contrario, apri WP Crontrol e verifica se il task publish_future_post è in sospeso senza essere eseguito; questo indica un problema più profondo del cron sul server, che il metodo 2 risolverà.



