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

11 commenti

Damiano Scritto il10:29 - 15 Settembre 2021

Ciao Francesca, grazie per l’articolo utilissimo.
Avendo gran poche conoscenze di programmazione, ho seguito e applicato nel mio Woocommerce alla lettera quanto hai scritto.
Allo stato attuale però, il prodotto che voglio regalare viene sì aggiunto in automatico al carrello, ma viene conteggiato il suo prezzo nel subtotale, facendolo quindi pagare al cliente a tutti gli effetti.
Ti risulta? C’è qualcosa che devo correggere o integrare? Inoltre come si può far sì che nel checkout/subtotale il cliente veda che è “gratis” anzichè venga mostrato il suo prezzo?
Se vuoi dare un occhio, il sito è https://labottegadelpet.it/

Grazie infinite, Damiano.

    Francesca Roccabruna Scritto il10:45 - 15 Settembre 2021

    Devi creare un prodotto nascosto dal catalogo e inserirlo con prezzo a 0

      Damiano Scritto il12:34 - 15 Settembre 2021

      Grazie mille!
      E come fare per:
      – mantenere fissa a 1 la quantità dell’omaggio nel carrello senza possa essere aumentata nel checkout?
      – rimuovere l’omaggio dal carrello se vengono rimossi tutti gli articoli della spesa?

      Grazie ancora infinitamente!

        Francesca Roccabruna Scritto il12:35 - 15 Settembre 2021

        Il primo punto basta impostare che si può acquistare solo 1 prodotto per ordine nella configurazione del prodotto
        Il secondo punto è automatico se non ricordo male

          Damiano Scritto il12:50 - 15 Settembre 2021

          Gentile Francesca,
          grazie per il primo punto!
          Per il secondo punto purtroppo no 🙁

          Francesca Roccabruna Scritto il12:54 - 15 Settembre 2021

          Controlla di aver inserito correttamente tutte le stringhe di codice

          Damiano Scritto il12:56 - 15 Settembre 2021

          C’è una stringa in particolare su cui fare il controllo?

Maurizio Scritto il00:34 - 6 Giugno 2021

Ciao Francesca. Articolo interessante.
Ho una richiesta differente, non so se è fattibile.
Un mio cliente tratta profumi e vuole dare un campione per ogni acquisto a prescindere dalla spesa (e fin qui ci siamo).
Ma vuole offrire più campione e vuole che l’acquirente scelga quale omaggio può avere tra quelli a disposizione.
Come posso modificare il codice?
Grazie

    Francesca Roccabruna Scritto il12:12 - 10 Giugno 2021

    Ci sono dei plugin già fatti che ti permettono di scegliere il regalo sulla base del numero di prodotti presenti nel carrello
    o per un minimo di importo. Io questo lo avevo realizzato perchè volevo che il prodotto venisse inserito automaticamente nel carrello e non avevo trovato nulla che mi piacesse.

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.

Lascia un commento

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

©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