簡體   English   中英

在 WooCommerce 中添加按運輸區域的運輸方式

[英]Add shipping method by shipping zone in WooCommerce

當客戶地址在特定運輸區域內時,我想添加特定的運輸方式。 在通過 Stackoverflow 搜索時,我發現很多片段根據某些標准刪除了運輸方式,但我發現沒有添加運輸方式。 選項中存在所需的運輸方式,默認情況下禁用,它是 ID 7 的固定費率。這是我嘗試過的:

add_filter( 'woocommerce_package_rates', 'add_shipping_method_based_on_shipping_zone', 10, 2 );
function add_shipping_method_based_on_shipping_zone( $rates, $package )
{
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;
    
    $shipping_zone = wc_get_shipping_zone( $package );
    $zone_id   = $shipping_zone->get_id();

    if ( $zone_id == 3) {
        // some magic here to add an existing shipping method which was disabled in shipping options
        $rates[] = 'flat_rate:7'; // this does not work, looks like I have to insert all shipping method properties as well
    }
    
    return $rates;

}

區域匹配邏輯按預期工作,但我無法弄清楚如何將現有運輸方式添加到 $rates object。 我也無法通過 'woocommerce_package_rates' 過濾器打印 $rates 和 $package 內容,盡管它似乎在一段時間前有效。 因此,歡迎任何關於如何在購物車頁面上打印這些對象的建議。

當一種運輸方式被禁用時,它不會出現在$rates中,因此可以選擇啟用它並使用一些反向邏輯

function filter_woocommerce_package_rates( $rates, $package ) {
    // Shipping zone
    $shipping_zone = wc_get_shipping_zone( $package );
    
    // Get zone ID
    $zone_id = $shipping_zone->get_id();

    // NOT equal
    if ( $zone_id != 3 ) {
        // Unset a single rate/method
        unset( $rates['flat_rate:7'] );
    }

    return $rates;
}
add_filter( 'woocommerce_package_rates', 'filter_woocommerce_package_rates', 10, 2 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM