基于WooCommerce中定义的日期阈值的运输方法



我想启用WooCommerce中的两种运输方法,例如在特定日期之前的用户订单,然后我想启用第一运费方法以及特定日期之后的用户订单时想要启用第二运费。谁能让我知道是否有任何插件或代码可以执行此功能?

以下代码将基于定义的日期阈值启用不同的运输方法。

您必须在功能中定义,您的设置为:
- 商店时区
- 两种运输方法速率IDS (例如'flat_rate:12'格式)
- 日期阈值

代码:

add_filter( 'woocommerce_package_rates', 'free_shipping_disable_flat_rate', 100, 2 );
function free_shipping_disable_flat_rate( $rates, $package ) {
    ## ----- YOUR SETTINGS HERE BELOW  ----- ##
    date_default_timezone_set('Europe/London'); // <== Set the time zone (http://php.net/manual/en/timezones.php)
    $shippping_rates = ['flat_rate:12', 'flat_rate:14']; // <== Set your 2 shipping methods rate IDs
    $defined_date    = "2019-03-05";                     // <== Set your date threshold
    ## ------------------------------------- ##
    $now_timestamp  = strtotime("now"); // Current timestamp in seconds
    $date_timestamp = strtotime($defined_date); // Targeted timestamp threshold
    // 1. BEFORE the specified date (with 1st shipping method rate ID)
    if ( array_key_exists( $shippping_rates[0], $rates ) && $now_timestamp > $date_timestamp ) {
        unset($rates[$shippping_rates[0]]); // Remove first shipping method
    }
    // 2. AFTER the specified date included (with 2nd shipping method rate ID)
    elseif ( array_key_exists( $shippping_rates[1], $rates ) && $now_timestamp <= $date_timestamp ) {
        unset($rates[$shippping_rates[1]]); // Remove Second shipping method
    }
    return $rates;
}

代码在您的活动子主题(或活动主题)的功能上启用函数。测试并起作用。

要使它起作用,您应该需要刷新运输缓存的数据:
1)首先,将此代码粘贴到您的function.php文件上。
2)在运输设置中,输入到运输区,然后禁用A 运输方法和"保存"并重新启用并"保存"。您完成了。

要获取正确的运输方法评分ID,请使用浏览器工具(在购物车或结帐页面)检查其无线电按钮代码,然后使用 value 属性数据,例如:

<input type="radio" name="shipping_method[0]" data-index="0" id="shipping_method_0_flat_rate12" 
value="flat_rate:12" class="shipping_method" checked="checked">

…所以它是 flat_rate:12 value="flat_rate:12"

相关内容

  • 没有找到相关文章

最新更新