Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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 在商业中应用特定优惠券时隐藏免费配送_Php_Wordpress_Woocommerce_Cart_Shipping Method - Fatal编程技术网

Php 在商业中应用特定优惠券时隐藏免费配送

Php 在商业中应用特定优惠券时隐藏免费配送,php,wordpress,woocommerce,cart,shipping-method,Php,Wordpress,Woocommerce,Cart,Shipping Method,我正试图设置它,以便为一个特定的优惠券,然后免费送货是不可用的 然后我试过这个,但不起作用 add_filter( 'woocommerce_shipping_packages', function( $packages ) { $applied_coupons = WC()->session->get( 'applied_coupons', array() ); if ( ! empty( $applied_coupons ) ) {

我正试图设置它,以便为一个特定的优惠券,然后免费送货是不可用的

然后我试过这个,但不起作用

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文件。测试和工作

刷新发货缓存:

  • 此代码已保存在functions.php文件中
  • 在配送区域设置中,禁用/保存任何配送方法,然后启用“返回/保存”

    您已经完成了,您可以进行测试

  • 不幸的是,这似乎不起作用@用户3037553使用优惠券“summer”试一试(店面主题的最后一个Woocommerce版本)。正如您将看到的,它是有效的。所以在你的网站上还有其他的问题。它可以是由您添加的自定义代码、由您的主题进行的某些自定义或错误的设置。由于此答案有效并回答了您的问题,您可以请您回答,谢谢。