在Woocommerce中应用特定优惠券时隐藏免费送货

问题描述

我正在尝试将其设置为对于特定的优惠券不可用。

然后我尝试了此操作,但它不起作用

add_filter( 'woocommerce_shipping_packages',function( $packages ) {
    $applied_coupons = WC()->session->get( 'applied_coupons',array() );
    if ( ! empty( $applied_coupons ) ) {
        
        if (in_array("544",$applied_coupons))
        {
        
            $free_shipping_id_11 = 'free_shipping:11';
            if($free_shipping_id_11){
                unset($packages[0]['rates'][ $free_shipping_id_11 ]);
            }
            $free_shipping_id_9 = 'free_shipping:9';
            if($free_shipping_id_9){
                unset($packages[0]['rates'][ $free_shipping_id_9 ]);
            }
        
        }
        
    }
    return $packages;
} );

解决方法

请尝试以下操作:

add_filter( 'woocommerce_package_rates','filter_woocommerce_package_rates',10,2 );
function filter_woocommerce_package_rates( $rates,$package ) {
    $targeted_coupons = array("544"); // Here set your related coupon codes

    $applied_coupons = WC()->cart->get_applied_coupons();

    if ( ! empty($applied_coupons) && array_intersect( $targeted_coupons,$applied_coupons ) ) {
        foreach ( $rates as $rate_key => $rate ) {
            if ( 'free_shipping' === $rate->method_id ) {
                unset($rates[$rate_key]);
            }
        }
    }
    return $rates;
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。

刷新发货缓存:

  1. 此代码已保存在您的functions.php文件中。
  2. 在运输区域设置中,禁用/保存任何运输方式,然后启用回退/保存。

    您已完成,您可以对其进行测试。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...