Impostazione durata della sessione del carrello di WooCommerce

Impostazione durata della sessione del carrello di WooCommerce

La durata della sessione del carrello di WooCommerce, per il gestore di un sito eCommerce, può risultare troppo breve se si lascia l’impostazione di default che è di sole 48 ore.

Aumentare la durata della sessione consente al cliente del sito di portare a termine un acquisto anche dopo diversi giorni ed evitare di ricominciare la procedura di acquisto soprattutto quando i prodotti nel carrello sono tanti.

Ovviamente questo vale se il visitatore utilizza lo stesso browser (o un altro browser sincronizzato con quello utilizzato in precedenza) e non ha cancellato le sessioni salvate.

Impostazione durata della sessione del carrello di WooCommerce

Quando un visitatore aggiunge per la prima volta un prodotto al carrello, viene avviata una sessione che, di default, dura 48 ore.
Quando scade, gli articoli aggiunti al carrello vengono automaticamente rimossi, il che significa che se quel visitatore tornerà dopo 2 giorni, troverà il carrello vuoto.

In realtà WordPress registra 2 sessioni differenti per il carrello.
Il primo, wc_session_expiring, che di default dura 47 ore, indica quando la sessione del visitatore sta per scadere e si attiva quindi un’ora prima di session_expiration che invece dura 48 ore.
Queste 2 sessioni vanno modificati insieme lasciando sempre un’ora di differenza l’una dall’altra.

Come modificare la durata della sessione

Possiamo impostare la durata della sessione aggiungendo un piccolo frammento di codice sul file functions.php evitando di aggiungere l’ennesimo plugin.

Consiglio sempre di effettuare queste modifiche intervenendo sul tema figlio (child theme) in modo da non sovrascrivere le modifiche in caso aggiornamento del tema principale di WordPress.
Ecco come aggiungere un tema figlio su Wordpress.

Ovviamente facciamo prima il solito backup dei file e del database prima di qualsiasi modifica importante su sito.

Per definire la durata della sessione, è necessario inserire un valore totale in secondi. Questo significa che dobbiamo convertire ore o giorni nel loro equivalente in secondi.

Ad esempio, per una scadenza di 48 ore, il calcolo è semplicemente secondi * minuti * ore, ovvero 60 * 60 * 48.
Se volessi fare un test con soli 5 minuti, il valore da inserire sarebbe 60 * 5.

Di conseguenza, per estendere la scadenza a 7 giorni, prima convertiamo i giorni in ore (7 giorni * 24 ore = 168 ore) e poi calcoliamo i secondi: 60 * 60 * 168.

Il codice da aggiungere al file functions.php è il seguente:

// Imposta la sessione in scadenza a 7 giorni meno un'ora
add_filter( 'wc_session_expiring', 'woocommerce_cart_session_about_to_expire'); 
function woocommerce_cart_session_about_to_expire() {

  // Valore 167 ore
  return 60 * 60 * 167; 

}

// Imposta la sessione che scade in 7 giorni
add_filter( 'wc_session_expiration', 'woocommerce_cart_session_expires'); 
function woocommerce_cart_session_expires() {

  // Valore 168 ore
  return 60 * 60 * 168; 

}