我想进一步扩展这里给出的代码:Hide specific shipping method depending on day time in Woocommerce
根据一天中的时间,此代码段将隐藏特定的装运方法,并且可以正常工作。但我也希望包括今天。
例如:获取当前日期和时间,如果您在星期六(=今天)晚上11点之后订购,则不能再选择“星期六交货”选项。如果在周六(即今天)晚上11点之前订购,您仍然可以选择。
add_filter( \'woocommerce_package_rates\', \'hide_shipping_method_based_on_time\', 10, 2 );
function hide_shipping_method_based_on_time( $rates, $package )
{
// Set your default time zone (http://php.net/manual/en/timezones.php)
date_default_timezone_set(\'Europe/London\');
// Here set your shipping rate Id
$shipping_rate_id = \'local_pickup:13\';
// When this shipping method is available and after 11 AM
if ( array_key_exists( $shipping_rate_id, $rates ) && date(\'H\') > 11 ) {
unset($rates[$shipping_rate_id]); // remove it
}
return $rates;
}
SO网友:Ivan Shatsky
要获取一周中的当前日期,可以使用date(\'w\')
函数调用(可以找到完整的格式描述here. 排除装运方式的整个条件,比如说现在是星期六,11点多,可以写为
date(\'w\') == 6 && date(\'H\') > 11
以及整个
if
块将是
if ( array_key_exists( $shipping_rate_id, $rates ) && date(\'w\') == 6 && date(\'H\') > 11 ) {
unset($rates[$shipping_rate_id]); // remove the shipping method
}
您正在使用
\'local_pickup:13\'
发货方法id,如您所参考的示例中所示,但您需要为您的特定案例找到实际的发货方法id。