根据日期和时间隐藏特定的运输方式

时间:2020-11-24 作者:Jordy Steyaert

我想进一步扩展这里给出的代码: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;
}

1 个回复
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。

相关推荐

站点运行状况:检测到活动的PHP会话

我是WordPress开发的新手,我刚刚创建了我的第一个主题。在我的wp admin中"Site Health" 告诉我已检测到PHP会话(严重错误),下面是消息:PHP会话是通过session\\u start()函数调用创建的。这会干扰REST API和环回请求。在发出任何HTTP请求之前,会话应该由session\\u write\\u close()关闭。我需要PHP的$_SESSION 对于主题脚本,我将其添加到我的函数中。要正确初始化会话的php文件:<?php&#x