Perché evitare il wp-cron di WordPress e usare un cron job server
16/05/25
3 minuti

Perché evitare il wp-cron di WordPress e usare un cron job server

Se hai mai dovuto schedulare task ripetitivi in WordPress – come inviare newsletter, sincronizzare dati o pubblicare articoli programmati – ti sei sicuramente imbattuto nel famigerato wp-cron.php. E se sei uno sviluppatore WordPress o un tecnico che ama la precisione e l’affidabilità… probabilmente ti sei anche chiesto: “Ma davvero voglio affidare tutto questo a un cron virtuale attivato dal caricamento di una pagina?!”

Spoiler: No. Non vuoi.

In questa guida ti spiego, con parole chiare e senza giri di codice inutili, perché il wp-cron non è adatto ad attività serie e come configurare un cron job lato server che faccia davvero il suo dovere.

Cos’è wp-cron e come funziona

In apparenza, wp-cron.php serve per gestire le operazioni programmate di WordPress. La sua funzione è quella di simulare un cron job, ovvero un’attività ricorrente nel tempo, come succede su qualsiasi sistema Unix-like con cron.

Ma attenzione: WordPress non ha un vero sistema cron. Quando un utente visita una pagina del sito, WordPress verifica se ci sono task in attesa di essere eseguiti, e in tal caso lancia wp-cron.php in background.

Detto in parole povere: se nessuno visita il sito, niente attività schedulata viene eseguita. 😬

I limiti strutturali del wp-cron

Se il tuo sito riceve molto traffico, potresti ritrovarti con una pioggia di richieste simultanee a wp-cron.php, causando rallentamenti e problemi di performance. Se invece hai poco traffico, le attività programmate potrebbero non partire affatto.

E non finisce qui. Altri punti critici:

  • Assenza di controllo preciso sull’orario di esecuzione: WordPress lancia le attività “quando può”, non quando dovrebbe.
  • Risorse sprecate: Ogni caricamento di pagina potrebbe innescare un check su wp-cron.php.
  • Blocchi da parte della cache: Plugin di caching o sistemi CDN come Cloudflare possono impedire a wp-cron.php di essere eseguito correttamente.
  • Task saltati in ambienti headless o REST-only: Se il frontend non viene mai caricato, il wp-cron è letteralmente inutile.

In sintesi, WordPress gestisce i cron come se fosse… un po’ in ritardo su tutto. ⏳

Quando il wp-cron può andar bene?

A onor del vero, ci sono dei casi in cui usare wp-cron è accettabile:

  • Siti di test o sviluppo
  • Blog personali con poche visite
  • Attività non critiche (es. svuotare una cache o aggiornare un feed ogni tanto)

In tutti gli altri casi (ovvero la maggioranza dei progetti seri) è fortemente consigliato passare a un cron job server.

Come disabilitare wp-cron e configurare un vero cron job in WordPress

🔧 1. Disattivare wp-cron

Per prima cosa, apri il file wp-config.php e inserisci questa riga prima del commento /* That's all, stop editing! Happy publishing. */:

define('DISABLE_WP_CRON', true);

Da questo momento in poi, WordPress smetterà di eseguire wp-cron.php a ogni caricamento di pagina.

🛠 2. Creare un cron job server-side

Ora tocca al server fare il lavoro sporco, ma in modo ordinato e affidabile.

Se usi cPanel, vai su “Cron Jobs” e aggiungi una nuova riga. Se sei su server dedicato o VPS con accesso SSH, digita crontab -e per modificare i tuoi cron.

Il comando classico da usare:

*/5 * * * * wget -q -O - https://www.tuosito.it/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Questo comando esegue il cron ogni 5 minuti. Puoi regolarlo secondo le tue esigenze (ogni 10, ogni 15, ecc.).

🧠 Alternative a wget

Se preferisci, puoi sostituire wget con curl:

*/5 * * * * curl https://www.tuosito.it/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Oppure usare direttamente PHP se vuoi avere maggiore controllo:

*/5 * * * * php /percorso/assoluto/alla/tuainstallazione/wp-cron.php > /dev/null 2>&1

Assicurati che il tuo server consenta l’uso di cron personalizzati e abbia accesso alla riga di comando.

Conclusioni

Il cron di WordPress è un compromesso nato per facilitare la vita a chi gestisce piccoli siti. Ma se stai lavorando su progetti professionali, e-commerce, membership site, LMS o portali dinamici, affidarti al wp-cron significa accettare ritardi, task saltati e poca affidabilità.

Il passaggio a un cron job server-side è semplice, ti dà il pieno controllo e migliora notevolmente l’efficienza del sito. È un piccolo intervento, ma con un grande impatto.

🎯 Se sei uno sviluppatore, un sistemista o semplicemente un appassionato di WordPress che ama fare le cose fatte bene, questa è una modifica che ti consiglio di implementare oggi stesso.


Hai bisogno di un sito web moderno e funzionale?
Richiedilo Ora!