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

34 commenti

Aniello Scritto il18:01 - 22 Maggio 2024

Ciao Francesca, ho wordpress versione 6.5.3 e woocommerce versione 8.9.1 e il codice non funziona, è probabile che con le ultime versioni non funzioni più?

    Francesca Scritto il12:23 - 12 Giugno 2024

    Ciao! E’ possibile il codice non viene manutentato da parecchio

F. Scritto il23:58 - 11 Maggio 2024

Ciao,
ma se il regalo ha delle variazioni (la taglia per esempio), come posso far segliere la taglia a carrello?

    Francesca Scritto il12:23 - 12 Giugno 2024

    Puoi consigliare di indicarlo nelle note dell’ordine

francesco Scritto il23:59 - 29 Gennaio 2024

ciao
Complimenti per tutto il lavoro condiviso.
Confermo che ad oggi tutto funziona ancora perfettamente.
Premesso che nn sono un mago in questo, vorrei dare la possibilità di eliminare il regalo dal carrello in caso non fosse gradito.
Non riesco purtroppo a capire dove inserire le ultime tringhe di codice che, se ho afferrato, dovrebbero dare questa facoltà.
Grazie in anticipo

Bruno Scritto il13:49 - 27 Novembre 2023

Con gli ultimi aggiornamenti ho problema con il prezzo. Ad esempio imposto il prodotto omaggio a 100 €, ma nel carrello lo inizia a segnare una volta raggiunti i 110 €.
Come si può correggere la cosa?

Sara Scritto il10:32 - 19 Luglio 2023

Ciao Francesca, chiarissime le tue spiegazioni. Io stavo pensando a questa opzione per risolvere un passaggio di acquisto per la mia associazione. Ho un’associazione che propone corsi online, però è necessario essere soci per accedere ai servizi. Quindi se qualcuno vuol prendere un corso da noi e non è ancora socio, l’idea potrebbe essere che nel carrello gli si aggiunga in automatico anche la tessera socio con relativo importo (quindi questo caso non a 0). So che si può fare collegando ad esempio quest’aggiunta a ogni prodotto.
Ma 1: non devono essere aggiunte più tessere! se uno ad esempio acquista 2 prodotti, si potrebbe limitare a una per carrello?

Ma 2: i soci in teoria questa aggiunta non la devono avere, in fase di checkout pensavo si può invitare a loggarsi, così non hanno l’aggiunta della tessera. Basterebbe?

Ma come si può fare a sdoppiare l’esperienza dell’ acquisto da loggato, cioè socio e da non loggato?

    Francesca Scritto il18:04 - 29 Agosto 2023

    Ciao Sara, ci sono soluzioni alternative, questa soluzione però non va bene.

Alex Scritto il11:47 - 15 Marzo 2023

Il codice è tuttora funzionante, WP versione 6.1.1 e WooC versione 7.5.0.

antonella Scritto il17:45 - 23 Febbraio 2023

ciao, grazie per il tuo articolo, ti chiedo che differenza c’è in pratica tra la soluzione uno e due del punto 3. Grazie mille

    Francesca Scritto il12:38 - 30 Marzo 2023

    IL limite di spesa

Vincenzo Scritto il19:43 - 14 Febbraio 2023

Buonasera,
Intanto complimenti per l’articolo, veramente molto utile.
Vorrei chiedere è possibile fare in modo che il regalo compaia al superamento di un determinato importo nel carrello ma solo per un tot di volte, ad esempio solo ai primi 10 clienti che superano l’importo previsto e naturalmente che effettuano l’acquisto. Sperando di essermi spiegato ti ringrazio anticipatamente e ti auguro buona serata.

    Francesca Scritto il09:00 - 15 Febbraio 2023

    Buongiorno, certo che si può fare ma tramite una personalizzazione, anche perchè vanno definite delle variabili, tipo primi 10 di cosa? Periodo assoluto o primi 10 in una giornata? In questo caso basta creare una variabile e poi eseguire un controllo sul numero di ordini già effettuati.

Giuseppe Scritto il11:16 - 7 Giugno 2022

Ciao Francesca, articolo molto interessante. Sto cercando qualcosa del genere per il mio sito, ma volevo chiederti se ci fosse il modo di inserire l’omaggio solo con il primo ordine, insomma di farlo solo come omaggio di benvenuto. Sto cercando da giorni qualcosa ma non ho ancora risolto.
Grazie in anticipo.

    Francesca Scritto il15:45 - 23 Giugno 2022

    Hai provato a usare i COUPON?

Andrea Scritto il12:29 - 28 Dicembre 2021

Ciao! Una domanda: non mi funziona il tasto “Attiva” nel backend, anche se non spuntato l’opzione regalo compare allo scattare della soglia che imposto. Dacosa potrebbe essere dovuto?

    Francesca Scritto il15:55 - 7 Maggio 2022

    Il codice è di qualche tempo fa, potrebbe essere qualche incompatibilità

emilio Scritto il16:59 - 19 Ottobre 2021

Ciao Francesca, inutile dirti che i tuoi articoli sono sempre utilissimi.
Io invece ho la necessità di omaggiare un prodotto ogni volta che il cliente ordine per es. 6 bottiglie. Quindi ogni 6 bbottiglie ne carrello vorrei che comprarisse il prodotto in omaggio.
invece se ordina 12 bottiglie ci saranno 2 prodotti omaggio.
Come pensi che posso procedere in questo senso?

    Francesca Roccabruna Scritto il16:52 - 11 Novembre 2021

    Per questo ci sono altre tipologie di plugin da utilizzare 🙂

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?

      Francesco Scritto il21:21 - 14 Aprile 2022

      ciao come si crea un prodotto nascosto?
      grazie!

        Francesca Scritto il15:52 - 7 Maggio 2022

        Basta impostarlo come privato nelle impostazioni

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.

      Francesco Scritto il21:31 - 14 Aprile 2022

      l’obiettivo infatti sarebbe non far comparire il prodotto nel catalogo ma solo come omaggio al momento del superamento di un tot euro o collegato ad un altro prodotto… si puo’ fare? grazie in anticipo.

        Francesca Scritto il15:53 - 7 Maggio 2022

        Si certo si può aggiungere proprio con questo sistema, per l’aggancio ad un prodotto però va fatta una modifica o usato un’altro sistema

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