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.

Il valore del tempo di scadenza della sessione deve essere espresso in secondi, motivo per cui 48 ore sono espresse come 60 * 60 * 48 (secondi x minuti x ore).
Per testarlo, ad esempio, potresti volerlo impostare temporaneamente su 5 minuti, nel qual caso puoi impostare il tempo in 60 * 5.

Quindi se, per esempio, desideri portare il tempo di scadenza a 7 giorni, di conseguenza dovrai inserire il tempo come 60 * 60 * 162. Quindi il codice da aggiungere al file functions.php è questo:

// 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 * 1688; 

}