WooCommerce · Coș de cumpărături
WooCommerce: adăugarea automată a unui cadou în coș
„Peste 250 de lei primești un cadou.” Cadoul se adaugă singur în coș la prag și dispare dacă clientul scoate produse; iată cum se construiește sigur.
- Cadou la prag
- Preț zero
- Eliminare sub prag
- Un singur cadou
- Mesaj în coș
Răspuns în aceeași zi lucrătoare Ofertă fixă Fără parole
Răspuns rapid
Creezi un produs-cadou și, cu hook-ul woocommerce_before_calculate_totals, adaugi automat cadoul când subtotalul fără cadou depășește pragul (marcând articolul cu un indicator), îi setezi prețul la 0 și îl elimini când coșul scade sub prag. Ține cont de stoc, de un singur cadou pe comandă, de mesajul către client și de evitarea buclelor (hook-ul rulează de mai multe ori).
Ce ai nevoie
- Produsul-cadou (cu stoc)
- Pragul și regula (o singură dată, doar un cadou)
- Acces la tema copil
- Un mediu de test
Pașii, pe rând
- 1Definește regulaPragul, ce cadou, o singură dată pe comandă, dacă se aplică și cu cupon și ce se întâmplă dacă cadoul e epuizat.
- 2Creează produsul-cadouProdus cu stoc propriu, ascuns din catalog (vizibilitate „ascuns”), ca să nu se cumpere separat.
- 3Adaugă cadoul când se atinge pragulÎn woocommerce_before_calculate_totals calculezi subtotalul fără cadou și, dacă depășește pragul și cadoul nu e în coș, îl adaugi cu un indicator în datele articolului.
- 4Setează prețul la zeroPentru articolul marcat ca cadou, setezi prețul 0 în același hook.
- 5Elimină cadoul sub pragDacă subtotalul fără cadou scade sub prag, scoți articolul-cadou din coș.
- 6Evită bucleleHook-ul poate rula de mai multe ori; folosește verificări (indicator pe articol, did_action) ca să nu adaugi același cadou de mai multe ori.
- 7Informează clientulUn mesaj în coș: „Ai primit un cadou!” sau „Mai ai nevoie de 40 lei pentru cadou.”
- 8TesteazăCoș sub prag, la prag, peste prag, cu eliminare de produse și cu cadou epuizat. Verifică totalurile și stocul.
Cadou automat peste prag (schelet)
phpadd_action('woocommerce_before_calculate_totals', function ($cart) {
if (is_admin() && !defined('DOING_AJAX')) {
return;
}
if (did_action('woocommerce_before_calculate_totals') >= 2) {
return;
}
$gift_id = 123; // ID-ul produsului-cadou
$prag = 250; // lei
$sub = 0.0;
$gift_key = null;
foreach ($cart->get_cart() as $key => $item) {
if (!empty($item['wl_gift'])) {
$gift_key = $key;
continue;
}
$sub += (float) $item['line_subtotal'];
}
if ($sub >= $prag && !$gift_key) {
$cart->add_to_cart($gift_id, 1, 0, [], ['wl_gift' => true]);
} elseif ($sub < $prag && $gift_key) {
$cart->remove_cart_item($gift_key);
}
foreach ($cart->get_cart() as $item) {
if (!empty($item['wl_gift'])) {
$item['data']->set_price(0);
}
}
});Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). ID-ul și pragul sunt exemple. Verifică stocul cadoului, comportamentul cu cupoane și cu checkout-ul cu blocuri înainte de lansare.
Mai multe detalii
Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
Cadoul se adaugă de mai multe ori
De ce: Hook-ul rulează repetat fără verificare.
Ce faci: Marchează articolul-cadou și verifică existența lui înainte de adăugare.
Cadoul rămâne după ce scazi sub prag
De ce: Logica de eliminare lipsește sau folosește un subtotal care include cadoul.
Ce faci: Calculează subtotalul fără articolul-cadou.
Cadoul epuizat blochează comanda
De ce: Produsul nu mai are stoc.
Ce faci: Verifică stocul înainte de adăugare și ascunde mesajul când e epuizat.
Întrebări frecvente4 răspunsuri
Cadoul poate fi cumpărat separat?
Nu, dacă produsul e ascuns din catalog și prețul la zero se aplică doar articolului marcat din coș.
Funcționează cu checkout-ul cu blocuri?
Logica de coș funcționează în ambele, dar mesajele și testele trebuie verificate pe checkout-ul tău.
Pot oferi cadou doar la prima comandă?
Da, adăugând o verificare a istoricului comenzilor clientului.
Vă ocupați de implementare?
Da, cu regulile tale de campanie. Cere ofertă fixă.
Subiecte acoperite pe această pagină
- cadou automat în coș WooCommerce
- produs gratuit peste o sumă
- cadou la prag coș
- woocommerce_before_calculate_totals cadou
- campanie cadou WooCommerce
Ghiduri apropiate
- WooCommerce: produsele nu se adaugă în coș
- WooCommerce: coșul se golește la navigarea între pagini
- WooCommerce: cantitatea din coș nu se actualizează
- WooCommerce: prețul din coș diferă de prețul produsului
- WooCommerce: configurarea unei valori minime a comenzii
- WooCommerce: limitarea cantității cumpărate pentru un produs
- WooCommerce: suma rămasă până la transport gratuit
- Toate ghidurile
Surse și verificare
- Codul sursă WooCommerce: coș (class-wc-cart.php)
- Cart și Checkout blocks: extensibilitate (documentația pentru dezvoltatori)
Verificat pe 5 noiembrie 2026. Denumirile din setări și pașii pot diferi între versiuni.
