我想禁用免费送货,直到在WooCommerce中的某个日期只使用PHP.

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

function disable_free_shipping_until_certain_date($rates, $package) {
    $current_date = date("Y-m-d");
    $disable_date = strtotime('2024-02-25');
    $disable_date = date('Y-m-d',$disable_date);
    
    if($current_date < $disable_date){
        unset( $rates['free_shipping'] );
    }
    return $rates;
}

这是我制作的PHP代码片段,但它不起作用.
为什么我无法使其工作?
我需要更改什么?

推荐答案

您需要在当前发货区为您的免费发货方式定义正确的发货费率ID (array key),才能使其在您的代码中起作用.

try 以下操作,在特定的定义日期阈值之前禁用免费送货:

add_filter( 'woocommerce_package_rates', 'disable_free_shipping_until_specific_date', 10, 2 );
function disable_free_shipping_until_specific_date( $rates, $package ) {
    $threshold_date = '2024-02-25'; // Threshold date until free shipping is disabled

    // Loop through shipping rates for the current shipping package
    foreach ( $rates as $rate_key => $rate ) {
        // Targeting free shipping and specific date
        if ( 'free_shipping' === $rate->method_id && time() <= strtotime($threshold_date) ) {
            unset($rates[$rate_key]); // Remove shipping rate
        }
    }
    return $rates;
}

代码放在子主题的functions.php文件中(或插件中).测试和作品.

Important:您必须清空购物车才能刷新发货方法缓存.

Php相关问答推荐

基于验证动态更改输入字段类(名称密码)&

致命错误:无法使用简单的php博客重新声明spl_autoload_Register()

Nginx重写扩展名为.php的动态URL

在PHP中,如何将介于0和1之间(包括0和1)的浮点概率转换为数组索引?

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

根据WooCommerce Cart小计阈值自动应用优惠券

WooCommerce在购物车项目中复制产品而不增加产品数量

在php中,方法之间的属性链接是如何工作的

获取作者';在WordPress中使用PHP

Shopware 6 插件:如何删除/迁移布尔配置到多选配置

如何使用 PHP 创建简化的 twig 替换?

有没有办法像引用枚举一样引用注册表中的对象?

PHP 支持 APNG 文件吗?

使用 foreach php 将记录正确分配给正确的父级

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数

PHP 日期格式:ISO8601 与 ISO8601_EXPANDED

使用 RSA 2048 公钥验证 RSA PKCS#1v1.5 SHA 256 签名

htaccess 无限循环问题

构建 [Controller] 时目标 [Interface] 不可实例化

fopen 功能不断向我发送我重新加载网页时已发布的重复版本的表单