Come mostrare la spedizione gratuita solo agli utenti loggati in WooCommerce
08/05/25
2 minuti

Come mostrare la spedizione gratuita solo agli utenti loggati in WooCommerce

Se stai cercando un modo per offrire la spedizione gratuita solo ai clienti registrati, sei nel posto giusto. In WooCommerce non esiste un’opzione standard per farlo, ma con un semplice snippet PHP puoi ottenere questo risultato in modo elegante e funzionale.

In questa guida ti spiego come funziona, dove inserirlo e come personalizzarlo se vuoi ampliare la logica.

Perché limitare la spedizione gratuita agli utenti loggati

Offrire la spedizione gratuita come vantaggio per i clienti registrati è una strategia intelligente. Ecco alcuni motivi:

  • 🔐 Incentiva la registrazione → più utenti registrati = più fidelizzazione
  • 💬 Puoi inviare offerte personalizzate via email
  • 💼 Gestione ordini più precisa grazie ai dati del cliente
  • 🧠 Segmentazione marketing più efficace

In pratica: stai premiando chi si registra, offrendo un piccolo ma concreto vantaggio. Vediamo subito come farlo.

Snippet PHP per mostrare solo la spedizione gratuita agli utenti loggati

Ecco lo snippet che ti permette di nascondere tutte le opzioni di spedizione tranne quella gratuita – ma solo se il cliente ha fatto login.

add_filter('woocommerce_package_rates', 'mostra_solo_spedizione_gratuita_utenti_loggati', 100, 2);

function mostra_solo_spedizione_gratuita_utenti_loggati($rates, $package) {
	// Se l'utente NON è loggato, mostra tutte le opzioni
	if (!is_user_logged_in()) {
		return $rates;
	}

	// Controlla se esiste almeno una spedizione gratuita
	$spedizione_gratuita = array();

	foreach ($rates as $rate_id => $rate) {
		if ('free_shipping' === $rate->method_id) {
			$spedizione_gratuita[$rate_id] = $rate;
		}
	}

	// Se esiste almeno una spedizione gratuita, mostra solo quella
	return !empty($spedizione_gratuita) ? $spedizione_gratuita : $rates;
}


Come installare lo snippet


1. Metodo consigliato: plugin Code Snippets

  1. Vai su Plugin > Aggiungi nuovo
  2. Cerca “Code Snippets
  3. Installa e attiva il plugin
  4. Vai su Snippet > Aggiungi nuovo
  5. Incolla il codice
  6. Salva e attiva

💡 Semplice, sicuro e non rischi di perdere le modifiche con gli aggiornamenti del tema.


2. Metodo alternativo: file functions.php del tema child

  1. Vai su: /wp-content/themes/tuo-tema-child/functions.php
  2. Apri il file e incolla lo snippet in fondo
  3. Salva le modifiche

⚠️ Usa sempre un tema child, altrimenti le modifiche andranno perse agli aggiornamenti.


Come funziona lo snippet

Vediamolo in modo semplice:
Controlla se l’utente è loggato:

if (!isuser_logged_in()) return $rates;


Cerca le opzioni di spedizione gratuita nel carrello:

if ('free_shipping' === $rate->method_id)


Se c’è almeno una spedizione gratuita, mostra solo quella.
Altrimenti, mostra tutte le altre opzioni.

💡 Per gli utenti non loggati, WooCommerce continua a mostrare tutte le opzioni di spedizione normalmente.

Conclusione: premia i tuoi clienti registrati

Con questo semplice snippet puoi premiare la registrazione al sito offrendo la spedizione gratuita solo agli utenti loggati. Una soluzione pratica per:

✅ Fidelizzare
✅ Ridurre abbandoni del carrello
✅ Incentivare la creazione di account
✅ Semplificare la logistica

In più, tutto funziona senza plugin esterni e si integra perfettamente con WooCommerce.


Hai bisogno di un E-Commerce che funziona davvero?
Contattami Ora!