Un sito il cui articolo programmato per le nove del mattino si pubblica solo a tarda mattinata, o il cui backup notturno sembra saltare una notte su due, soffre generalmente di un equivoco molto diffuso sul funzionamento di WordPress: il sistema deputato a eseguire queste attività pianificate, chiamato WP-Cron, non è un vero pianificatore nel senso in cui lo intenderebbe un server.

Cosa fa realmente WP-Cron

Un vero cron, a livello di sistema, è un meccanismo del server che si attiva a orari fissi, indipendentemente da qualsiasi attività esterna, esattamente come un orologio. WP-Cron, al contrario, si attiva solo quando un visitatore carica una pagina del sito. A ogni caricamento di pagina, WordPress verifica se un'attività pianificata è giunta a scadenza, e in tal caso la esegue in quel preciso momento anziché all'orario previsto. Questa progettazione, scelta originariamente per funzionare su qualsiasi hosting senza una configurazione server specifica, funziona ragionevolmente bene finché il sito riceve un flusso regolare di visite.

Il problema su un sito a basso traffico

Un sito vetrina o un blog visitato da una manciata di persone al giorno può restare diverse ore senza alcuna visita, in particolare di notte. Se un'attività è programmata per le tre del mattino e nessun visitatore carica una pagina prima delle otto, quell'attività semplicemente non viene eseguita prima di quel momento. Un articolo previsto di prima mattina si pubblica quindi in ritardo, un backup notturno si sposta di conseguenza, e un invio email pianificato parte molto più tardi del previsto, senza che appaia alcun errore visibile nell'amministrazione del sito.

Il problema opposto su un sito ad alto traffico

Su un sito che riceve un traffico importante, WP-Cron si attiva a ogni caricamento di pagina, il che può significare un controllo eseguito decine o centinaia di volte al minuto. Questo controllo ripetuto consuma inutilmente risorse del server, e può contribuire a un rallentamento generale difficile da diagnosticare, poiché il suo effetto si confonde con quello di altri processi del sito anziché emergere come una causa isolata.

La soluzione consigliata: un vero cron di sistema

La correzione standard consiste nel disattivare il comportamento predefinito di WP-Cron aggiungendo la riga define parentesi virgolette DISABLE_WP_CRON virgolette virgola true chiudi parentesi punto e virgola nel file wp-config.php, e poi configurare un vero cron a livello di server, generalmente accessibile tramite il pannello di amministrazione dell'hosting o da riga di comando. Questo cron di sistema richiama il file wp-cron.php del sito a intervalli regolari, spesso ogni cinque minuti, garantendo un'esecuzione affidabile delle attività pianificate indipendentemente dal traffico reale del sito. La maggior parte degli hosting orientati a WordPress offre questa configurazione in pochi clic dalla propria interfaccia di gestione.

Diagnosticare un'attività pianificata che non si esegue

Prima di modificare la configurazione, è utile verificare con precisione quali attività sono programmate e a che ora, cosa che consente un'estensione come WP Crontrol, che mostra l'elenco completo degli eventi pianificati, permette di attivarli manualmente per test, e aiuta a individuare un'attività bloccata o duplicata, un problema frequente quando più estensioni programmano controlli simili senza coordinarsi tra loro.

Il caso delle attività pesanti e ripetitive

Per elaborazioni più complesse di una semplice pubblicazione differita, come la sincronizzazione regolare di dati con un CRM o l'invio automatizzato di promemoria ai clienti, una libreria come Action Scheduler, integrata nativamente in WooCommerce ma utilizzabile in modo indipendente, gestisce una coda persistente basata su database, con un monitoraggio preciso dello stato di ciascuna attività. Questo approccio si adatta meglio di un semplice hook WP-Cron a uno sviluppo PHP su misura o a un'automazione aziendale che necessita di maggiore affidabilità.

Punti da verificare prima della pubblicazione: confermare che la sintassi consigliata per disattivare WP-Cron in wp-config.php resti invariata per le versioni attuali di WordPress, e verificare che l'estensione WP Crontrol citata resti attivamente mantenuta e disponibile nella directory ufficiale alla data di pubblicazione.