Il WP-Cron di WordPress è rotto per design
WordPress ha un sistema cron integrato (WP-Cron) che esegue task programmati: pubblicazione post schedulati, controllo aggiornamenti, pulizia commenti cestinati, invio email programmate. Il problema: WP-Cron non è un vero cron. Si attiva solo quando qualcuno visita il sito. Se il sito non riceve visite per 8 ore: i task programmati non vengono eseguiti per 8 ore. Un post schedulato per le 9:00 viene pubblicato alle 14:00 quando arriva il primo visitatore del pomeriggio. Un backup programmato per le 3 di notte non parte perché nessuno visita il sito alle 3 di notte. Per siti con poco traffico (la maggior parte delle PMI): WP-Cron è inaffidabile.
La soluzione: cron reale del server
Disattiva WP-Cron e usa il cron del server
In wp-config.php aggiungi: define('DISABLE_WP_CRON', true); Questo impedisce a WordPress di controllare i task ad ogni visita (eliminando anche il leggero overhead che WP-Cron aggiunge). Poi configura un cron job reale nel server (crontab su Linux, Task Scheduler su Windows) che chiama wp-cron.php ogni 5-15 minuti: */5 * * * * wget -q -O - https://tuodominio.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1. Ora i task vengono eseguiti ogni 5 minuti indipendentemente dalle visite. I post schedulati escono puntuali. I backup partono all'ora giusta. Le pulizie avvengono regolarmente.
Hosting che lo gestisce per te
Molti hosting managed (SiteGround, Kinsta, Cloudways) offrono la possibilità di configurare il cron server dal pannello senza accesso SSH. Su SiteGround: Site Tools → Cron Jobs → aggiungi il comando. Su Kinsta: il cron del server è configurato di default. Verifica con il tuo hosting: se offrono cron server, usalo e disattiva WP-Cron.
Task custom con WP-Cron
Schedulare funzioni personalizzate
Oltre ai task nativi di WordPress, puoi creare i tuoi: wp_schedule_event() registra una funzione da eseguire a intervalli regolari. Esempio: un task che ogni giorno controlla se ci sono ordini WooCommerce non pagati da 48+ ore e li cancella automaticamente. Un task che ogni settimana genera un report dei contenuti pubblicati e lo invia via email. Un task che ogni mese archivia i log vecchi. Nel functions.php (o meglio, in un mu-plugin): registra l'evento e la funzione, WordPress lo esegue all'intervallo specificato.
LANGA Tools e i cron jobs
Il modulo cron di LANGA Tools fornisce un'interfaccia visuale per: vedere tutti i cron jobs registrati (nativi e di plugin), la prossima esecuzione programmata, e lo stato. Creare task custom senza codice: seleziona un'azione (email, pulizia, export, notifica), configura la frequenza, e il toolkit registra il cron. Diagnosticare problemi: se un task non si esegue, il log mostra perché (errore PHP, timeout, conflitto). Per sviluppatori: il toolkit non sostituisce wp_schedule_event() ma lo rende visibile e gestibile.
Problemi comuni con WP-Cron
Task duplicati: plugin che registrano lo stesso cron job ogni volta che si caricano (senza controllare se esiste già). Risultato: 50 copie dello stesso task. Soluzione: il modulo LANGA Tools identifica i duplicati e li rimuove. Task orfani: plugin disinstallati che lasciano cron job attivi che tentano di chiamare funzioni non più esistenti. Generano errori PHP nel log. Soluzione: LANGA Tools identifica e rimuove i task orfani. Timeout: task che impiegano più di 30 secondi (il timeout default di PHP) vengono interrotti a metà. Soluzione: per task lunghi (backup, import), aumenta il timeout o dividi in batch.
Domande frequenti
Disattivare WP-Cron è sicuro?
Sì, purché configuri il cron del server come sostituto. Senza né WP-Cron né cron server: nessun task schedulato viene eseguito (post non pubblicati, backup non eseguiti, aggiornamenti non controllati). LANGA Tools verifica che almeno un sistema cron sia attivo e avvisa se entrambi sono disattivati.
Ogni quanto deve girare il cron?
Ogni 5 minuti è il compromesso ottimale: abbastanza frequente per i post schedulati (massimo 5 minuti di ritardo), abbastanza raro per non sovraccaricare il server. Per siti con molti task programmati: ogni 1-2 minuti. Per siti statici con pochi task: ogni 15 minuti. Mai meno di 1 minuto (sovraccarico inutile).
Per continuare a leggere,
accedi al tuo account.
Il tuo account LANGA ti connette a tutta la Galaxy.
Articoli completi su tutti i blog Galaxy.
Un solo login, accesso ovunque.
Guadagna Leghe e sblocca contenuti premium.