Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以编程方式在Woocommerce中自动应用优惠券?_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 如何以编程方式在Woocommerce中自动应用优惠券?

Php 如何以编程方式在Woocommerce中自动应用优惠券?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,您好,我希望在购物车的总金额为25欧元或更多时,自动向购物车应用20%的优惠券折扣-我查看了以前用户的代码,并尝试修改它并将其放入functions.php中,但是它对我不起作用-关于我做错了什么有帮助吗/?下面是我放在functions.php中的代码 /* Mod: 20% Discount for orders over €25 Works with code added to child theme: woocommerce/cart/cart.php lines 13 - 14: w

您好,我希望在购物车的总金额为25欧元或更多时,自动向购物车应用20%的优惠券折扣-我查看了以前用户的代码,并尝试修改它并将其放入functions.php中,但是它对我不起作用-关于我做错了什么有帮助吗/?下面是我放在functions.php中的代码

/* Mod: 20% Discount for orders over €25 
Works with code added to child theme: woocommerce/cart/cart.php lines 13 - 14: which gets $subtotal of cart:
        global $subtotal;
        $subtotal= $woocommerce->cart->subtotal;
*/
add_action('woocommerce_before_cart_table', 'discount_when_order_greater_25');
function discount_when_order_greater_25( ) {
    global $woocommerce;
    global $subtotal;
    if( $subtotal >= 25 ) {
        $coupon_code = '20';
        if (!$woocommerce->cart->add_discount( sanitize_text_field( $coupon_code ))) {
            $woocommerce->show_messages();
        }
        echo '<div class="woocommerce_message"><strong>Your order is over €25 so a 20% Discount has been Applied!</strong> Your total order weight is <strong>' . $total_weight . '</strong> lbs.</div>';
    }
}

/* Mod: 20% Discount for orders under €25  */
add_action('woocommerce_before_cart_table', 'remove_discount_when_order_less_25');
function remove_discount_when_order_less_25( ) {
    global $woocommerce;
    global $subtotal;
    if( $subtotal < 25 ) {
        $coupon_code = '20';
        $woocommerce->cart->get_applied_coupons();
        if (!$woocommerce->cart->remove_coupons( sanitize_text_field( $coupon_code ))) {
            $woocommerce->show_messages();
        }
        $woocommerce->cart->calculate_totals();
    }
}
/*Mod:25欧元以上订单可享受20%的折扣
使用添加到子主题的代码:woocommerce/cart/cart.php第13-14行:获取购物车的$subtotal:
全球$小计;
$subtotal=$woocommerce->cart->subtotal;
*/
添加动作(“购物车表前的商品”、“订单大于25时的折扣”);
订单大于25()时的功能折扣{
全球商业;
全球$小计;
如果($小计>=25){
$优惠券代码='20';
如果(!$woocommerce->cart->添加折扣(清理文本字段($优惠券代码))){
$woocommerce->show_messages();
}
echo“您的订单超过25欧元,因此已申请20%的折扣!您的订单总重量为。$total_weight.”lbs;
}
}
/*Mod:25欧元以下订单可享受20%的折扣*/
添加动作(“购物车表前的woocommerce”,“订单少25时删除折扣”);
当订单少于25()时,函数删除折扣{
全球商业;
全球$小计;
如果($小计<25){
$优惠券代码='20';
$woocommerce->cart->get_applicated_优惠券();
如果(!$woocommerce->cart->删除优惠券(清理优惠券文本字段($优惠券代码))){
$woocommerce->show_messages();
}
$woocommerce->cart->calculate_totals();
}
}

我在使用免费的WooCommerce插件时遇到了一些问题,这些插件旨在实现这一点(在woo commerce购物车中自动应用优惠券代码)。 其次,我在谷歌上很容易找到的论坛帖子不完整,并且抛出了未处理的异常

下面是截至2020-11-03的工作代码示例。您可以将其放入Wordpress子主题的文件夹functions.php文件中:

add_action('woocommerce_前_购物车','auto_应用_折扣_优惠券');
功能自动申请折扣优惠券(){
$wc_优惠券=新的wc_优惠券('DEMO-90JOURS');//获取wc_优惠券,代码为“DEMO-90JOURS”
如果(!$wc||!$wc|U优惠券->是否有效(){
返回;
}
$coupon_code=$wc_-coupon->get_-code();
if(!$优惠券\代码){
返回;
}
全球商业;
如果(!$woocommerce->cart->有折扣($优惠券代码)){
//您可以调用apply_优惠券(),而无需检查优惠券是否已应用,
//因为函数apply_toucon()本身将确保如果以前应用过它,则不会重新添加它。
//但是,此if检查可防止客户收到以下错误消息:
//每次更新购物车时,“已应用优惠券”。
如果(!$WOOMerce->cart->apply_优惠券($优惠券代码)){
$woocommerce->wc_print_notices();
返回;
}
wc_打印通知(“Le优惠券”。$优惠券代码。'aétéappriqueéavec success!”,“通知”);
}
}

为什么第二个函数调用
计算\u总计
而第一个函数不计算?