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.

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: , , , ,

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

  1. 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

  2. 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

Dubbi o suggerimenti? Lascia un commento!

I love Instagram