[英]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.