Action Scheduler di WooCommerce bloccato: diagnosticare code e operazioni fallite Admin-ajax.php consuma troppe risorse: trovare plugin e richieste responsabili Audit delle estensioni prima di migrare da Joomla 3 a Joomla 5 o 6 Cache Redis in WordPress mostra dati vecchi: diagnosi dell'object cache Come gestire SEO e hreflang in un sito multilingua Hugo Login loop in WordPress Multisite: cookie, dominio e HTTPS da controllare Plugin WordPress lento: il problema è nel database o nelle query? WP-Cron non funziona in WordPress: attività e pubblicazioni bloccate Come aggiornare WordPress da Excel senza creare duplicati Importare Excel in WordPress con un plugin personalizzato Migrazione WordPress: come gestire DNS, SSL ed email senza interruzioni ChatGPT Ads: la pubblicità a pagamento sfida Google Ads Localizzazione di un sito web per il mercato italiano Localizzazione e-commerce per l’Italia: catalogo, checkout e supporto tecnico Localizzazione professionale di siti web in italiano: oltre la traduzione Action Scheduler di WooCommerce bloccato: diagnosticare code e operazioni fallite Admin-ajax.php consuma troppe risorse: trovare plugin e richieste responsabili Audit delle estensioni prima di migrare da Joomla 3 a Joomla 5 o 6 Cache Redis in WordPress mostra dati vecchi: diagnosi dell'object cache Come gestire SEO e hreflang in un sito multilingua Hugo Login loop in WordPress Multisite: cookie, dominio e HTTPS da controllare Plugin WordPress lento: il problema è nel database o nelle query? WP-Cron non funziona in WordPress: attività e pubblicazioni bloccate Come aggiornare WordPress da Excel senza creare duplicati Importare Excel in WordPress con un plugin personalizzato Migrazione WordPress: come gestire DNS, SSL ed email senza interruzioni ChatGPT Ads: la pubblicità a pagamento sfida Google Ads Localizzazione di un sito web per il mercato italiano Localizzazione e-commerce per l’Italia: catalogo, checkout e supporto tecnico Localizzazione professionale di siti web in italiano: oltre la traduzione
WP-Cron non funziona in WordPress: attività e pubblicazioni bloccate

WP-Cron non funziona in WordPress: attività e pubblicazioni bloccate

Autore Graziano De Maio - Gdmtech
Ti auguro buona lettura e mi raccomando, se dopo aver letto questo articolo hai bisogno di aiuto non esitare a contattarmi.
Autore: Graziano De Maio | Titolare di Gdmtech
Indice dei contenuti

Una pubblicazione programmata rimane in attesa, un backup non parte oppure un’importazione periodica smette di aggiornare i dati. Il sito continua a essere raggiungibile, ma alcune attività automatiche non vengono più eseguite con regolarità. In questi casi il problema può riguardare WP-Cron, il sistema con cui WordPress gestisce gli eventi pianificati.

WP-Cron non è un processo che lavora continuamente sul server. La documentazione ufficiale di WordPress spiega che controlla gli eventi dovuti quando viene caricata una pagina. Su un sito con poco traffico, con loopback bloccate o con una configurazione incompleta, l’esecuzione può quindi arrivare in ritardo o non avvenire come previsto.

Cosa succede quando WP-Cron non funziona

WordPress usa gli eventi pianificati per funzioni del core e molti plugin li utilizzano per svolgere operazioni in background. L’effetto concreto dipende dai componenti installati, ma i sintomi possono includere:

  • articoli programmati che non vengono pubblicati;
  • backup e scansioni che non partono all’orario previsto;
  • sincronizzazioni con gestionali o servizi esterni in ritardo;
  • email e notifiche accodate;
  • importazioni ed esportazioni periodiche ferme;
  • pulizie e processi di manutenzione non eseguiti;
  • eventi segnalati come scaduti in Site Health.

Non tutti questi problemi dimostrano automaticamente un guasto di WP-Cron. Un singolo task può fallire per un errore PHP, un timeout o una risposta errata di un’API. La prima distinzione da fare è fra scheduler non attivato ed evento attivato ma incapace di completare il proprio lavoro.

Perché WP-Cron può eseguire gli eventi in ritardo

Il funzionamento legato alle visite è utile su installazioni che non hanno accesso al cron del sistema operativo, ma non garantisce un orario esatto. Se una pagina deve essere pubblicata alle 02:00 e nessuno visita il sito fino alle 07:00, il controllo può avvenire solo alla prima occasione successiva.

Anche un sito trafficato può avere problemi. WordPress avvia il cron attraverso una richiesta verso wp-cron.php; errori nelle richieste loopback, regole di sicurezza, autenticazioni HTTP, proxy, DNS o certificati possono impedire al sito di richiamare correttamente sé stesso. La costante DISABLE_WP_CRON, se presente, disabilita l’attivazione automatica e richiede che esista un meccanismo alternativo realmente configurato.

Altre cause possibili sono:

  • evento registrato con un hook che il plugin non gestisce più;
  • plugin disattivato senza rimuovere i propri eventi;
  • task troppo lungo per i limiti PHP o del server;
  • concorrenza fra molte operazioni pesanti;
  • chiamata esterna lenta o non disponibile;
  • errore fatale durante l’esecuzione;
  • ambiente di staging che blocca le richieste interne.

Come verificare gli eventi pianificati di WordPress

La diagnosi deve partire dall’elenco degli eventi, non dal tentativo di rilanciarli tutti. Con WP-CLI è possibile usare wp cron test per controllare il meccanismo di avvio e wp cron event list per esaminare hook, ricorrenza e prossima esecuzione. Sono comandi documentati nel manuale ufficiale WP-CLI.

Per ogni evento problematico conviene verificare:

  1. quale plugin o funzione registra l’hook;
  2. da quanto tempo l’evento risulta scaduto;
  3. se il ritardo riguarda un solo hook o tutta la coda;
  4. cosa accade eseguendo il task in un ambiente controllato;
  5. quali errori compaiono nei log PHP e applicativi;
  6. se la stessa operazione dipende da API, filesystem o database.

Eseguire manualmente un evento può aiutare a riprodurre l’errore, ma su un sito in produzione richiede cautela: un’importazione, un rinnovo o un invio potrebbero produrre conseguenze reali o duplicare un’elaborazione già in corso.

Quando sostituire WP-Cron con un cron di sistema

Per processi aziendali che devono partire con una cadenza prevedibile, può essere preferibile delegare l’attivazione al cron del server. In questa configurazione WordPress mantiene la propria coda, mentre il sistema operativo richiama periodicamente il runner.

Il passaggio non consiste soltanto nell’aggiungere DISABLE_WP_CRON. Bisogna prima verificare il percorso dell’installazione, la disponibilità di WP-CLI o PHP da riga di comando, l’utente che esegue il processo, la frequenza appropriata e la registrazione degli errori. Se si disabilita l’avvio interno senza creare un cron funzionante, tutte le attività restano ferme.

Un cron di sistema è particolarmente adatto quando il sito ha traffico discontinuo, esegue importazioni pianificate o sostiene processi che devono essere monitorati. Non corregge però un task difettoso: se il codice va in errore, renderne più regolare l’avvio non risolve la causa.

WP-Cron, loopback e Site Health

Gli avvisi sugli eventi programmati possono essere collegati a errori di loopback o REST API. L’articolo dedicato a Site Health, loopback e REST API in WordPress aiuta a leggere questi segnali come parti dello stesso sistema.

La verifica deve includere infrastruttura, configurazione e codice. Un firewall può bloccare la richiesta interna; un plugin può programmare eventi duplicati; un task può saturare memoria; un servizio esterno può rispondere lentamente. Il messaggio “evento pianificato in ritardo” descrive l’effetto, non identifica da solo il responsabile.

Quando serve un intervento tecnico su WP-Cron

Un evento occasionale in ritardo non richiede necessariamente una modifica architetturale. Serve invece un’analisi quando le attività si accumulano, le automazioni aziendali diventano inaffidabili o il problema ricompare dopo essere stato rilanciato manualmente.

L’intervento può comprendere la correzione della configurazione server, la sostituzione dell’avvio basato sulle visite, la revisione di un hook custom, la gestione dei timeout oppure la separazione di un’elaborazione lunga in passaggi più piccoli e controllabili.

Se pubblicazioni, backup o sincronizzazioni WordPress restano bloccati, posso analizzare eventi, log, loopback e configurazione del server per individuare la causa prima di modificare il sistema di pianificazione. La pagina di assistenza WordPress descrive gli interventi disponibili.

Autore Graziano De Maio - Gdmtech
Ti auguro buona lettura e mi raccomando, se dopo aver letto questo articolo hai bisogno di aiuto non esitare a contattarmi.
Autore: Graziano De Maio | Titolare di Gdmtech
Graziano De Maio, Web designer, SEO specialist
Graziano De Maio
Web Developer, SEO Specialist
Gdmtech Web Agency
Via Stefanardo da Vimercate 28 - (Milano)
Via Spinedi 55 - Postalesio (Sondrio)
Info e contatti