În acest articol, îți voi arăta cum să implementezi un sistem automat de transport gratuit în WooCommerce pentru produsele care depășesc 500 lei. Acest cod asigură afișarea corectă a mesajelor și aplică transportul gratuit doar dacă în coș există un produs eligibil.
1️⃣ Afișează mesajul de transport gratuit în pagina produsului
Pentru a informa utilizatorii că un produs beneficiază de transport gratuit, adăugăm un mesaj vizual direct în pagina produsului.
add_action('woocommerce_single_product_summary', 'display_free_shipping_message', 20);
function display_free_shipping_message() {
global $product;
if ($product->get_price() >= 500) {
echo '<p style="color:green; font-weight:bold; border: 2px solid green; padding: 10px; border-radius: 5px;">🚛 Acest produs beneficiază de TRANSPORT GRATUIT!</p>';
}
}
🔹 Cum funcționează?
- Verifică dacă prețul produsului este de minim 500 lei.
- Afișează un mesaj vizual clar pentru utilizator.
2️⃣ Afișează mesajul de transport gratuit în coș și la finalizarea comenzii
Pentru a oferi claritate utilizatorilor, afișăm mesajul și în coșul de cumpărături și în pagina de finalizare a comenzii.
add_action('woocommerce_before_cart', 'display_free_shipping_message_cart');
add_action('woocommerce_review_order_before_payment', 'display_free_shipping_message_cart');
function display_free_shipping_message_cart() {
$cart_total = WC()->cart->subtotal;
$free_shipping_threshold = 500;
if ($cart_total >= $free_shipping_threshold) {
echo '';
}
}
🔹 Cum funcționează?
- Verifică totalul coșului.
- Dacă este peste 500 lei, permite activarea transportului gratuit.
3️⃣ Aplică transport gratuit automat pentru produsele eligibile
Acest cod modifică metodele de livrare și activează transportul gratuit doar dacă în coș există un produs de minim 500 lei.
add_filter('woocommerce_package_rates', 'apply_free_shipping_if_product_over_500', 10, 2);
function apply_free_shipping_if_product_over_500($rates, $package) {
$has_free_shipping_product = false;
foreach (WC()->cart->get_cart() as $cart_item) {
if ($cart_item['data']->get_price() >= 500) {
$has_free_shipping_product = true;
break;
}
}
if ($has_free_shipping_product) {
$free_shipping = [];
foreach ($rates as $rate_id => $rate) {
if (strpos($rate_id, 'free_shipping') !== false) {
$free_shipping[$rate_id] = $rate;
}
}
// Dacă nu există transport gratuit, îl adăugăm manual
if (empty($free_shipping)) {
$free_shipping['free_shipping_manual'] = new WC_Shipping_Rate(
'free_shipping_manual',
'🚛 Transport Gratuit',
'0',
[],
'free_shipping'
);
}
return $free_shipping;
}
return $rates;
}
🔹 Cum funcționează?
- Verifică dacă în coș există un produs de 500 lei sau mai mult.
- Dacă există, elimini toate celelalte metode de livrare și setezi transport gratuit.
4️⃣ Elimină transportul gratuit dacă produsul de 500+ lei este scos din coș
Dacă utilizatorul elimină produsul care oferea transport gratuit, trebuie să reactivăm metodele standard de livrare.
add_action('woocommerce_cart_updated', 'restore_shipping_if_no_free_product');
function restore_shipping_if_no_free_product() {
$has_free_shipping_product = false;
foreach (WC()->cart->get_cart() as $cart_item) {
if ($cart_item['data']->get_price() >= 500) {
$has_free_shipping_product = true;
break;
}
}
if (!$has_free_shipping_product) {
WC()->session->set('chosen_shipping_methods', []);
}
}
🔹 Cum funcționează?
- Dacă nu mai există produse eligibile în coș, transportul gratuit este eliminat automat.
- Se reactivează metodele normale de livrare.
🎯 Concluzie
Acest cod asigură o implementare complet automatizată a transportului gratuit pentru WooCommerce:
✅ Afișează clar mesajul „Transport Gratuit” în pagina produsului, coș și checkout.
✅ Aplică transport gratuit doar pentru comenzile care conțin produse de minim 500 lei.
✅ Revine la metodele normale de transport dacă produsul eligibil este scos din coș.
💡 Testează-l pe magazinul tău WooCommerce și vezi cum crește conversia! 🚀