在Woocommerce我试图找到一种方法来申请10%的折扣,以整个客户的订单,如果在购物车的重量超过100磅.我离实现这一目标已经有一半了。对于下一步,我正在寻找一种通过functions.php通过action/hook以编程方式应用优惠券代码的方法。
看来我可以使用函数woocommerce_ AJAX _apply_coupon来完成这个(http://docs.woothemes.com/wc-apidocs/function-woocommerce_ajax_apply_coupon.html),但我不确定如何使用它。
到目前为止,我已经修改了cart.php来获取购物车中所有产品的总重量,我已经创建了一个优惠券,适用于折扣(如果手动输入),我已经添加了一些代码到functions.php来检查重量并向用户显示消息。
编辑:删除了部分代码,完成的代码包含在下面的解决方案中。
谢谢你的指导,Freney。以下是工作结束的结果,当满足条件时成功应用折扣券,当不再满足时也会删除它:
/* 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();
}
}
字符串
3条答案
按热度按时间ehxuflar1#
首先,创建一个折扣券(通过http://docs.woothemes.com/document/create-a-coupon-programatically/):
字符串
然后将该优惠券应用于您的订单:
型
最后一个函数返回一个BOOL值:如果折扣成功,则返回TRUE;如果由于各种原因中的任何一种而失败,则返回FALSE。
p1tboqfb2#
我使用了这个解决方案,但它包含一个错误,因为OP写了它。如果用户跳过预览购物车并直接进入结账表单,则不会应用优惠券。这是我的解决方案。
字符串
jdgnovmf3#
2017 / 2019自Woocommerce 3
以下紧凑的代码在一个挂钩函数将添加一个折扣(优惠券)的基础上购物车总重量显示自定义消息。如果客户改变购物车项目的代码将检查购物车项目删除折扣(优惠券),如果购物车重量是在定义的重量。
代码:
字符串
代码放在活动子主题(或活动主题)的functions.php文件中。经过测试,工作正常。
x1c 0d1x的数据