Come impostare i cronjob di WordPress

  • Come configurare i cronjob di WordPress

WordPress ha un sistema di cronjobbing che si attiva solo quando qualcuno visita il sito. Se nessuno visita il sito, il sistema di cronjobbing non si attiva, le email non vengono inviate, i post non vengono pubblicati, se hai un sito con WooCommerce i prodotti non vengono sincronizzati con i market place, l'inventario non viene aggiornato... In poche parole, addio automazione!

La soluzione a questi problemi è semplice: impostare un cronjob in WordPress che non dipenda dalle visite al sito. Vediamo come fare.

Cos'è un cronjob

CronJob sta più o meno per "Lavoro a tempo" o "Lavoro temporizzato" e, in parole povere, consiste nell'esecuzione pianificata di un'azione svolta da un programma: a intervalli di tempo determinati, il comando viene eseguito senza che nessuno debba agire manualmente. Si occupa di tutto il server su cui è ospitato il tuo e-commerce.

Un cronjob, per esempio, serve per inviare ai tuoi clienti le email della newsletter (se le gestisci direttamente dal tuo e-commerce) o per sincronizzare il magazzino con il tuo gestionale o con i market places.
Insomma, i cronjob servono a svolgere tutti quei lavori ciclici che necessitano di essere eseguiti a intervalli di tempo definiti.

I cronjob di un sito web o di un e-commerce si eseguono visitando una pagina atta allo scopo. Per WordPress, per esempio, la pagina è http://example.com/wp-cron.php.

Perchè funzionino al 100%, i cronjob andrebbero configurati a livello di sistema operativo: in questo modo allo scoccare dell'"ora X" il server chiama da solo la pagina dei cronjob ed esegue il comando autonomamente, indipendentemente da ogni condizione esterna.

Per un motivo o per l'altro, però, tutti i sistemi di commercio elettronico e i CMS moderni implementano un meccanismo più semplice: eseguono questi comandi quando qualcuno visita il sito web o l'e-commerce. Questo sistema in WordPress si chiama WP Cron: ogni volta che WordPress deve mostrare una pagina, per prima cosa esegue Wp Cron, poi mostra la pagina al navigatore.

Questo ha il vantaggio di non richiedere la configurazione dei cronjob nel server ma ha due enormi svantaggi:

  1. L'esecuzione del lavoro diventa estremamente incerta: infatti, poichè esso viene svolto quando qualcuno visita il sito, se nessuno visita il sito nessun comando viene eseguito autonomamente;
  2. I tempi di caricamento della pagina aumentano poichè prima di mostrare il contenuto, WordPress deve eseguire i comandi del cron job. E talvolta l'esecuzione di questi comandi non è proprio veloce!

È fondamentale, quindi, per un e-commerce, che i cronjob siano configurati a livello di server.

Come configurare i cronjob di WordPress con CPanel

Il modo più semplice di configurare un cronjob sul tuo hosting è usando CPanel un pannello di controllo che i servizi di hosting mettono spesso a disposizione per amministrare il tuo spazio web (prima di acquistare l'hosting per il tuo e-commerce, controlla che il piano che hai scelto preveda CPanel!).

Prima di passare a CPanel, però, un piccolo intervento su WordPress.

STEP 1: Disabilitare WP Cron in WordPress

Poichè non sarà più necessario eseguire i cron job ogni volta che un utente visiterà il sito, sarà bene disabilitare WP Cron.

Quindi, apri il file wp-config.php e aggiungi la costante DISABLE_WP_CRON e impostane il valore a true:

/** Disabilita la funzione interna Wp-Cron **/
define('DISABLE_WP_CRON', true);

Carica il file wp-config.php di nuovo sul server e passiamo a CPanel.

STEP 2: Configurare i cronjob in CPanel

Quindi, dopo aver eseguito l'accesso a CPanel, scorri la pagina fino in fondo, fino alla voce "Avanzate": in quest'area c'è il link "Processi Cron" che ti porterà al pannello di controllo dei cronjob.

CPanel, voce di menu CronJobs

Nella nuova pagina aggiungi l'indirizzo e-mail al quale verrà notificata l'esecuzione di ogni cronjob:

3670-CPanel-CronJobs-Aggiungi_email

In questo modo sarai sicuro che tutto funzioni nel modo giusto.

Nella sezione immediatamente sotto, configura il tuo cronjob impostando l'intervallo di tempo che desideri (30 minuti nell'immagine sotto) e il comando per richiamare il file wp-config-php:

curl -s -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)" http://www.tuo-ecommerce.it/wp-cron.php?doing_wp_cron

Se vuoi usare wget, invece, il comando è questo:

wget -O /dev/null http://www.tuo-ecommerce.it/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Il consiglio è di non usare quest'ultimo comando (inserito per completezza del post), ma di usare il comando curl poichè con alcune configurazioni l'altro comando potrebbe venire bloccato per ragioni di sicurezza.

Aggiungi il cronjob di WordPress a CPanel

Clicca su "Aggiungi nuovo processo Cron" e il comando appena configurato apparirà nella sezione immediatamente sotto dove sono elencati tutti i comandi cronjob che hai configurato:

3670-CPanel-CronJobs-Processi_Cron_Correnti

Configurare i cronjob con un servizio esterno

Ok, forse esiste un modo più semplice di CPanel.

Infatti sul web esistono alcuni servizi di cronjobbing.

Il procedimento è molto simile, solo che anzichè usare l'interfaccia di CPanel, usi l'interfaccia del servizio che hai scelto.

Una semplice ricerca su Google ti fornirà una nutrita lista di servizi.

Vedere quali cronjob sono attivi in WordPress

A questo punto abbiamo configurato il nostro cronjob ma... quali sono i cronjob che WordPress esegue?

Legittima curiosità 🙂 E allora, per sapere quali sono i cronjob che verranno eseguiti da WordPress, puoi usare il plugin WP Crontrol che, come vedi, mostra un elenco dei tempi dei cronjob impostati (Impostazioni > Cron Schedules) e i cronjob attualmente configurati (Strumenti > Cron Events):

Schermata Cron Schedules di Crontrol

Schermata Cron Events di Crontrol

In quest'ultima immagine, nota l'avviso che mi informa che ho disabilitato WP Cron impostando la costante DISABLE_WP_CRON a true.

E per chiudere, un altro plugin che potrebbe tornarti utile quando un plugin che richiede l'uso di cronjob non usa le funzioni integrate di WordPress per configurarli e quindi è necessario configurarli a mano. In questo caso puoi agire direttamente dal pannello di controllo di CPanel oppure semplicemente usare Cronjob Scheduler che farà tutto al posto tuo.

2017-04-07T16:12:35+00:00 By |Categorie: Blog|Argomenti: , , , |

Scrivi un commento