Aggiungi regalo nel carrello woocommerce con minimo d’ordine senza plugin

Aggiungi regalo nel carrello woocommerce con minimo d’ordine senza plugin

Prendo spunto da un articolo che ho trovato qualche giorno fa che permette di aggiungere al carrello un prodotto al raggiungimento di un importo del carrello.

La funzionalità si attiva facilmente inserendo del codice all’interno del file functions.php

L’articolo è il seguente: https://interno15.it/blog/come-aggiungere-un-prodotto-in-regalo-nel-carrello-di-woocommerce-al-raggiungimento-di-un-importo-senza-acquistare-plugin

Ho voluto però fare una piccola modifica che mi permette di controllare le variabili dentro wooocommerce una volta inserito il codice senza necessariamente entrare e modificare il file functions.php

Cosa di deve fare:

  • aggiungere il codice così come indicato dall’articolo di interno15.it
  • aggiungere il codice che permette di gestire le variabili: ID prodotto, Importo Minimo Carrello, Escludi/Includi spese di spedizione nel calcolo(PUNTO 2). Le variabili saranno visibili all’interno delle impostazioni woocoommerce -> prodotti -> regalo nel carrello
  • sostituire 3 righe di codice con le variabili create (PUNTO 3)

Punto 2

add_filter( 'woocommerce_get_sections_products' , 'gift_settings_tab' );

function gift_settings_tab( $settings_tab ){
     $settings_tab['gift_btn'] = __( 'Regalo nel carrello' );
     return $settings_tab;
}

add_filter( 'woocommerce_get_settings_products' , 'gift_get_settings' , 10, 2 );

function gift_get_settings( $settings, $current_section ) {
        $custom_settings = array();

        if( 'gift_btn' == $current_section ) {
	
			$custom_settings =  array(

			array(
				'name' => __( 'Regalo nel carrello' ),
				'type' => 'title',
				'desc' => __( 'Sezione personalizzata per un regalo nel carrello<hr/>' ),
				'id'   => 'gift_btn_id' 
			),

			array(
				'name' => __( 'Opzione attiva' ),
				'type' => 'checkbox',
				'desc' => __( 'Attiva'),
				'id'	=> 'enable_btn_gift'
			),
			
			array(
				'name' => __( 'ID Prodotto' ),
				'type' => 'text',
				'desc' => 'Prodotto che sarà aggiunto nel carrello',
				'id'	=> 'id_product_to_gift'
			),
			array(
				'name' => __( 'Totale carrello minimo' ),
				'type' => 'text',
				'desc' => 'Importo minimo che deve essere il carrello per aggiungere il regalo',
				'id'	=> 'cart_value_product_to_gift'
			),

			array(
				'name' => __( '' ),
				'type' => 'checkbox',
				'desc' => __( 'escludi dal totale carrello minimo le spese di spedizione'),
				'id'	=> 'exlude_shopping_cost_for_gift'
			),
			
			array( 'type' => 'sectionend', 'id' => 'gift_btn_id' ),

			);	
				
		return $custom_settings;
     } else {
        	return $settings;
    }

}

Punto 3


$product_gifted_id = 0;
//diventa
$product_gifted_id =get_option( 'id_product_to_gift' );


$price_limit = 80;
//diventa
$price_limit =floatval(get_option( 'cart_value_product_to_gift' ));


$total_with_delivery = false/true;
//diventa

if (get_option( 'exlude_shopping_cost_for_gift' )=='no') 
$total_with_delivery = false;
else
$total_with_delivery = true;

La variabile “attiva regalo” si può gestire in due modi:
– non facendo nessuna operazione (quindi se è nel carrello il regalo non lo toglie)
– se non attiva rimuovi il regalo dal carrello (nel caso che il prodotto destinato a regalo sia usato sempre e solo come regalo)

Se fosse per esempio il caso 2 aggiungere nel codice dopo la stringa di controllo carrello vuoto il seguente codice:

if (get_option( 'enable_btn_gift' )=='no') {
WC()->cart->remove_cart_item( $product_gifted_id ); //commentare questa riga se non volete che venga rimosso il prodotto dal carrello
return;
}
Francesca Roccabruna

2 commenti

Gabriele Scritto il15:22 - 3 Maggio 2021

Ciao Francesca, il tuo articolo è davvero interessante, mi chiedevo se ci fosse un modo per avere l’opportunità di imporre delle regole multiple. Nel mio caso ad esempio, mi servirebbe che vi siano due importi da raggiungere, al primo di 30,00 euro, sarà riconosciuto un regalo, al secondo di 50,00 un altro regalo. Nel codice così come l’hai concepito sembrerebbe non essere possibile.

Ti sarei molto grato se riuscissi ad aiutarmi.

Saluti

    Francesca Roccabruna Scritto il15:29 - 3 Maggio 2021

    Con il codice attuale no, ma con qualche passaggio può essere possibile.
    Basta creare due variabili in più e gestire poi delle condizioni nel codice sulla base delle variabili che gestiscono gli importi.

    if (importo >= importo1) assegna regalo1
    If (import >=importo2) assegna regalo2

    ovviamente l’importo due deve essere maggiore del primo perchè sovrascriva il regalo.

©2021 AGANIS WEB SOFTWARE di Francesca Roccabruna P.IVA TRENTO 02183500228 - N.REA 205930 La Web Agency per la realizzazione del tuo sito web
Privacy Policy