如何限制一周中某些日子的 WooCommerce 送货区域

我需要在周日隐藏 WooCommerce Shipping zone_id=1 和 Shipping zone_id=3。

提出了这段代码:

// Hide $15 & $25 shipping rates on Sunday


add_filter('woocommerce_package_rates', 'amano_hide_shipping_method_on_sunday', 10, 2);


function amano_hide_shipping_method_on_sunday($available_shipping_methods, $package) {


$date = date("1");

$is_sunday = date('l', $date) == 'Sunday';


if($is_sunday) {


    $hide_when_shipping_class_exist = array(

        42 => array(

            'free_shipping'

        )

    );

    

    $hide_when_shipping_class_not_exist = array(

        42 => array(

            'wf_shipping_ups:03',

            'wf_shipping_ups:02',

             'wf_shipping_ups:01'

        ),

        43 => array(

            'free_shipping'

        )

    );


    $shipping_class_in_cart = array();


    foreach(WC()->cart->cart_contents as $key => $values) {

    $shipping_class_in_cart[] = $values['data']->get_shipping_class_id();

    }


    foreach($hide_when_shipping_class_exist as $class_id => $methods) {

        if(in_array($class_id, $shipping_class_in_cart)){

            foreach($methods as & $current_method) {

                unset($available_shipping_methods[$current_method]);

            }

        }

    }

    foreach($hide_when_shipping_class_not_exist as $class_id => $methods) {

        if(!in_array($class_id, $shipping_class_in_cart)){

            foreach($methods as & $current_method) {

                unset($available_shipping_methods[$current_method]);

            }

        }

    }

    return $available_shipping_methods;

    }

}

然而,我不知道如何定制的是:


    $hide_when_shipping_class_exist = array(

        42 => array(

            'free_shipping'

        )

    );


    $hide_when_shipping_class_not_exist = array(

        42 => array(

            'wf_shipping_ups:03',

            'wf_shipping_ups:02',

             'wf_shipping_ups:01'

        ),

        43 => array(

            'free_shipping'

        )

    );

我没有任何运输类别,也不明白它们是什么。可能需要替换更多代码来替换隐藏运输区域的运输类别,但我不知道该代码是什么。


请帮助表示赞赏。


繁星coding
浏览 121回答 1
1回答

慕妹3242003

代码包含在特定的一天未设置$rates[$rate_key]某些区域 ID注释并添加到代码中的解释function filter_woocommerce_package_rates( $rates, $package ) {    /* SETTINGS */        // Zone ID's    $hide_zones = array ( 1, 3 );        $on_day = 'Sunday';        /* END SETTINGS */        // Shipping zone    $shipping_zone = wc_get_shipping_zone( $package );        // Get zone ID    $zone_id = $shipping_zone->get_id();        // set the default timezone to use. Available since PHP 5.1    date_default_timezone_set('UTC');        // l - A full textual representation of the day of the week    $day_of_the_week = date( 'l' );    // True    if( $day_of_the_week == $on_day ) {        // In array        if ( in_array( $zone_id, $hide_zones ) ) {            // Loop            foreach ( $rates as $rate_key => $rate ) {                // Unset                unset( $rates[$rate_key] );            }        }    }        return $rates;}add_filter( 'woocommerce_package_rates', 'filter_woocommerce_package_rates', 10, 2 );
打开App,查看更多内容
随时随地看视频慕课网APP