Gestire ordini multipli di x in WooCommerce

ATTENZIONE: questo articolo è stato scritto oltre un anno fa, ed i contenuti potrebbero non essere più validi o compatibili. Sei pregato di tenerne conto, e se hai informazioni in merito di segnalarmele, grazie.

WooCommerce ordini per multipli

Prendiamo ad esempio lo store di un’azienda vinicola, che per motivi logistici deve vendere 6 bottiglie alla volta, e quindi permettere solo ordini dove il quantitativo deve essere 6 o un multiplo di 6.

Se si tratta di confezioni dello stesso vino è facile, si crea come prodotto la confezione da 6 e non la bottiglia singola, ma se volessimo permettere l’acquisto di bottiglie diverse, purché 6 (o multipli di 6) alla volta?

Il solito snippet ci viene in aiuto.

Il codice che segue, che ho trovato in rete e personalizzato, deve essere copiato nel file delle funzioni del tema (al solito meglio se si tratta di un tema child).

add_action( 'woocommerce_check_cart_items', 'woocommerce_check_cart_quantities' );
function woocommerce_check_cart_quantities() {
  	$multiples = 6;
	$total_products = 0;
	foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
		$total_products += $values['quantity'];
	}
	if ( ( $total_products % $multiples ) > 0 )
		wc_add_notice( sprintf( __('Ci scusiamo ma per motivi logistici gli ordini devono essere in multipli di %s prodotti', 'woocommerce'), $multiples ), 'error' );
}

add_action( 'woocommerce_check_cart_items', 'woocommerce_check_cart_quantities_for_class' );
function woocommerce_check_cart_quantities_for_class() {
  	$multiples = 6;
  	$class = 'bottle';
	$total_products = 0;
	foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
		$product = get_product( $values['product_id'] );
		if ( $product->get_shipping_class() == $class ) {
			$total_products += $values['quantity'];
		}
	}
	if ( ( $total_products % $multiples ) > 0 )
		wc_add_notice( sprintf( __('Ci scusiamo ma per motivi logistici gli ordini devono essere in multipli di %s', 'woocommerce'), $multiples ), 'error' );
}

In realtà si tratta di un doppio snippet, ma serve tutto intero per raggiungere lo scopo.

Roberto Rota esperto WordPress e WooCommerce

Hai bisogno di aiuto con WooCommerce?

Se hai bisogno di assistenza per il tuo store WooCommerce, o anche solo per mettere in pratica queste istruzioni, contattami!

Le personalizzazioni devono essere fatte alle righe 6 e 14, dove bisogna indicare il numero di articoli ordinabili (o multipli dello stesso numero), ed alle righe 9 e 24 dove si può personalizzare il messaggio di errore se nel carrello non ci sono le condizioni per proseguire con l’ordine.

Questo snippet riguarda il numero globale di articoli aggiunti al carrello, e si adatta bene ad uno store che vende solo articoli con questa problematica, calzante quindi l’esempio della casa vinicola che vende solo bottiglie.

Se la situazione è differente, e cioè lo store prevede anche altri articoli che non hanno il problema logistico delle bottiglie, per citare l’esempio poco sopra, bisogna pensare ad una soluzione diversa.

Lo snippet è stato testato con WooCommerce 2.3.9, WordPress 4.2.1 e tema Storefront.

Tags: , , , ,

9 Risposte a “Gestire ordini multipli di x in WooCommerce”

  1. Debora 20 Mar 2019 at 11:41 #

    Ciao Roberto! A me purtroppo non funziona 😐
    L’ho inserito in fuction.php del child del tema in uso ma mi compare solo il testo del codice nell’header del sito. Sto sbagliando qualcosa?
    Grazie!
    deby

    • Roberto Rota 20 Mar 2019 at 11:43 #

      Ciao Debora,

      a parte lo sminchiamento dello script che devo ancora sistemare, si tratta di uno script che ho pubblicato nel 2015, dovrei comunque verificarlo

      Appena posso lo faccio…

  2. Xavier 20 Dic 2017 at 05:33 #

    Ho dimenticato di aggiungere che, ovviamente, il problema deriva dal fatto che l’imballaggio delle bottiglie avviene in sedi separate.

  3. Xavier 20 Dic 2017 at 05:21 #

    Ciao Roberto. Stavo cercando una soluzione al mio problema e ho trovato il tuo articolo. Purtroppo io avrei la necessità di stabilire un multiplo di 3 per gruppi di prodotti con un determinato attributo e non solo per la quantità finale nel carrello. Mi spiego meglio:

    Ho già stabilito una quantità minima di 3 per la somma dei prodotti con l’attributo – cantina nel mio caso – A e la quantità minima di 6 per la somma dei prodotti con l’attributo – cantina – B. Vorrei però che il multiplo della somma dei prodotti con l’attributo A sia 3, idem per quelli con l’attributo B. Con lo snippet che hai condiviso e personalizzato mi ritroverei, scusami il termine, fregato nel caso un cliente acquistasse 4 (ad esempio 1+1+2) prodotti con l’attributo A e 8 (ad esempio 3+5) prodotti con l’attributo B. Avrei si, raggiunto il minimo d’ordine per ciascuno e un totale di 12 prodotti, quindi multiplo di 3, ma il mio cliente avrebbe un problema di gestione, perché non dispone di imballaggi da 1/2 bottiglie, ma solo da 3 e da 6.

    Sapresti aiutarmi? Grazie mille.

  4. Michele Marziano 1 Apr 2016 at 18:49 #

    Ciao Roberto,
    ho usato il codice xché mi serviva impostare un carrello con 6 pezzi o multipli di 6, grazie (ti ho anche pagato una pizza ;)). Ora ho un problema: non posso inserire nel carrello uno stesso pezzo/bottiglia più di una sola volta, mentre magari sarebbe meglio poterne inserire anche fino a 6 dello stesso tipo…
    Sono un neofita assoluto, hai idee/modifiche per il codice degli ordini multipli? Grazie!

    • Roberto Rota 1 Apr 2016 at 22:20 #

      Non dovresti avere problemi ad inserire più bottiglie dello stesso tipo in un ordine, sei sicro di non aver flaggato l’opzione di ordine unico nel prodotto?

      rob

      • michele 19 Apr 2016 at 12:24 #

        Hahahaha! Sì, infatti era proprio così…che pivello

  5. Andrea 26 Giu 2015 at 11:43 #

    Ciao, ho trovato davvero molto interessante il tuo articolo e mi ritrovo esattamente nella situazione differente descritta in fondo all’articolo.

    “Se la situazione è differente, e cioè lo store prevede anche altri articoli che non hanno il problema
    logistico delle bottiglie, per citare l’esempio poco sopra, bisogna pensare ad una soluzione diversa.”

    Per questo hai già trovato una soluzione? Oppure hai già in mente un qualcosa per aggirare la problematica?

    Ti ringrazio in anticipo e complimenti per gli articoli sempre molto interessanti.

    Andrea

    • Roberto Rota 26 Giu 2015 at 12:26 #

      Ciao Andrea,

      non mi è capitato ancora di doverci pensare, ma credo che sfruttando a modino qualche regola con il condizionale si possono risolvere parecchie situazioni, direttamente per prodotti o per categorie ad esempio.

      rob

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Ciao, come posso aiutarti?
Powered by