Wordpress + woocommerce rimuovere pacchetto prodotti dal conteggio del carrello

wolftrick

Nuovo Utente
16 Lug 2015
1
0
0
Ciao a tutti,

chiedo in anticipo scusa se ho sbagliato sezione, ma non sapevo bene se dovevo postare su Wordpress, oppure Php oppure woocommerce (essendo discussioni generiche). Nel caso qua fosse sbagliato, spostatela pure in quella più corretta.

Nel mio sito realizzato con Wordpress ho installato e configurato Woocommerce insieme al plugin product bundle, per poter creare dei pacchetti di oggetti.

Premetto che, con l'aiuto di google, sono riuscito a creare la funzione con cui il cliente per poter procedere all'acquisto deve inserire nel carrello un numero di prodotti pari a 6 o multipli di 6.
Il codice che ho nel mio function.php file è il seguente:
PHP:
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( __('Devi acquistre prodotti per una quantità di %s prodotti alla volta', 'woocommerce'), $multiples ), 'error' );
}
Fin qua tutto bene. Il problema nasce quando creo un pacchetto, grazie al plugin product bundle, con 6 oggetti al suo interno. Quando un cliente lo inserisce nel carrello, compare il messaggio di errore in quanto viene conteggiato il pacchetto stesso nel totale degli oggetti nel carrello... quindi invece che 6, il totale risulta 7.

Ho trovato online una probabile soluzione che dovrebbe disabilitare il conteggio del pacchetto nel totale degli oggetti nel carrello, ma purtroppo nel mio caso non succede nulla.

Ora il mio function.php risulta così:

PHP:
<?php
/**
 * Child-Theme functions and definitions
 */

 // check that cart items quantities totals are in multiples of 6
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( __('Devi acquistre prodotti per una quantità di %s prodotti alla volta', 'woocommerce'), $multiples ), 'error' );
}

function so_28359520_cart_contents_count( $count ) {
    $cart = WC()->cart->get_cart();
    $subtract = 0;
    foreach ( $cart as $key => $value ) {
        if ( isset( $value[ 'stamp' ] ) && ! isset( $value[ 'bundled_by' ] ) ) {
            $subtract += $value[ 'quantity' ];
        }
    }
    return $count - $subtract;
}
add_filter( 'woocommerce_cart_contents_count',  'so_28359520_cart_contents_count' );

function so_disable_bundles_cart_contents_count(){
    if( function_exists( 'WC_Bundles' ) ){
        remove_filter( 'woocommerce_cart_contents_count',  array( WC_Bundles()->display, 'woo_bundles_cart_contents_count' ) );
    }
}
add_action( 'init', 'so_disable_bundles_cart_contents_count' );
Ho fatto anche delle prove su installazioni "vergini" di wordpress e woocommerce per verificare che la colpa non fosse di qualche javascript del tema o di qualche plugin, ma il risultato non cambia.

Chiedo quindi se c'è qualcuno che possa aiutarmi a poterci saltare fuori, altrimenti non riesco a mettere online il mio sito web :( .

Ringrazio veramente di cuore chi potrà e vorrà aiutarmi!