Woocommerce Alışveriş sepetindeki ağırlık 100 lbs'nin üzerindeyse tüm müşterinin siparişine% 10 indirim uygulamanın bir yolunu bulmaya çalışıyorum. Bunu başarmanın bir yoluyum. Bir sonraki adımda, function.php aracılığıyla action/hook yoluyla bir kupon kodunu programlı olarak uygulamanın bir yolunu arıyorum.Woocommerce'de nasıl bir kupon programlı olarak uygularım?
Bunu yapmak için woocommerce_ajax_apply_coupon işlevini kullanabilirim (http://docs.woothemes.com/wc-apidocs/function-woocommerce_ajax_apply_coupon.html) ama nasıl kullanacağından emin değilim.
Şimdiye kadar cart.php'yi sepetteki tüm ürünlerin toplam ağırlığını almak için değiştirdim, indirim uygulayan bir kupon oluşturdum (elle girilirse) ve bazı kodları fonksiyonlara ekledim Ağırlığı kontrol etmek ve kullanıcıya bir mesaj görüntülemek için .php. DÜZENLEME: Kısmi kod kaldırıldı, tamamlanmış kod aşağıdaki çözümde yer aldı.
Yardım için teşekkürler Freney. İşte başarılı koşul karşılandığında indirim kuponu geçerlidir çalışma Sonuçta olduğunu ve ayrıca artık tanıştı zaman kaldırır:
/* Mod: 10% Discount for weight greater than 100 lbs
Works with code added to child theme: woocommerce/cart/cart.php lines 13 - 14: which gets $total_weight of cart:
global $total_weight;
$total_weight = $woocommerce->cart->cart_contents_weight;
*/
add_action('woocommerce_before_cart_table', 'discount_when_weight_greater_than_100');
function discount_when_weight_greater_than_100() {
global $woocommerce;
global $total_weight;
if($total_weight > 100) {
$coupon_code = '999';
if (!$woocommerce->cart->add_discount(sanitize_text_field($coupon_code))) {
$woocommerce->show_messages();
}
echo '<div class="woocommerce_message"><strong>Your order is over 100 lbs so a 10% Discount has been Applied!</strong> Your total order weight is <strong>' . $total_weight . '</strong> lbs.</div>';
}
}
/* Mod: Remove 10% Discount for weight less than or equal to 100 lbs */
add_action('woocommerce_before_cart_table', 'remove_coupon_if_weight_100_or_less');
function remove_coupon_if_weight_100_or_less() {
global $woocommerce;
global $total_weight;
if($total_weight <= 100) {
$coupon_code = '999';
$woocommerce->cart->get_applied_coupons();
if (!$woocommerce->cart->remove_coupons(sanitize_text_field($coupon_code))) {
$woocommerce->show_messages();
}
$woocommerce->cart->calculate_totals();
}
}
Arka uçta zaten bir kupon var olduğundan: "999" Yalnızca kuponu uygulamak için sağladığınız kodu ekledim. Ancak, ben woocommerce sepeti sayfasına gittiğimde şu anda hatayı alıyorum: hat 65 üzerinde [yol…] işlev.php içindeki bir nesne olmayan bir add_discount() üye işlevini çağırın [add_discount ile if ifadesi]. Kodun neye benzediğini göstermek için orijinal gönderimdeki kodu güncelledim. – msargenttrue
$ $ $ o adding adding $ total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total total – Freney
Teşekkürler, işe yaradı! Şimdi şimdi indirimi başarılı bir şekilde uygulayabiliyorum ama şimdi başka bir sorun farkettim… Eğer kullanıcı bazı alışveriş sepetlerini kaldırırsa ve sepet 100 lbs veya daha azına geri dönerse indirim hala geçerli. Sepeti koşullara artık uymazsa indirimi kaldırmanın bir yolunu arıyorum, böylece kullanıcılar bu kuponu kullanamaz. Add_discount'ın tersi şekilde çalışan bir remove_discount işlevi olmasını beklerdim ancak Woocommerce API'sinde bir tane bulamadım: http://docs.woothemes.com/wc-apidocs/ – msargenttrue