[英]Woocommerce conditional shipping cost reduction based on cart amount and item count
我正在尋找一種方法來根據購物車總百分比、統一費率和每種產品的數量來降低運費...
6 件產品:統一運費 20 歐元
12 件產品:統一運費 30 歐元
如何做到這一點?
這可以在沒有插件的情況下完成......
1) 您首先需要在 WooCommerce 運輸設置中為每個運輸區域設置“統一費率”方法的數量1
:
此金額將在我們的功能中從 1 到 11 件商品更改為20€
,對於 12 件或更多商品更改為30€
。 此金額將減少 10% 的購物車總金額。
2) 然后使用掛鈎在woocommerce_package_rates
過濾器鈎子中的自定義函數,您將能夠根據購物車項目數和購物車總數對運費進行折扣。
這是代碼:
add_filter( 'woocommerce_package_rates', 'custom_package_rates', 10, 2 );
function custom_package_rates( $rates, $packages ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
// Get some cart data and set variable values
$cart_count = WC()->cart->get_cart_contents_count();
$cart_total = WC()->cart->cart_contents_total;
$cart_10_percent = $cart_total * 0.1;
$flat_rate_value = 20; // Default "Flat rate" value
foreach($rates as $rate_key => $rate_values ) {
$method_id = $rate_values->method_id;
$rate_id = $rate_values->id;
if( $method_id == 'flat_rate' ){
if( $cart_count < 6 )
$cart_10_percent = 0; // No percent discount
elseif( $cart_count >= 12 )
$flat_rate_value = 30; // "Flat rate" value for 12 or more items
$rate_cost = $flat_rate_value > $cart_10_percent ? $flat_rate_value - $cart_10_percent : 0;
// Set the new calculated rate cost
$rates[$rate_id]->cost = number_format( $rates[$rate_id]->cost * $rate_cost, 2 );
// Taxes rate cost (if enabled)
$taxes = array();
foreach ($rates[$rate_id]->taxes as $key => $tax){
if( $tax > 0 ){ // set the new tax cost
// set the discounted tax cost
$taxes[$key] = number_format( $tax * $rate_cost, 2 );
}
}
$rates[$rate_id]->taxes = $taxes;
}
}
return $rates;
}
代碼位於活動子主題(或主題)的 function.php 文件或任何插件文件中。
在 WooCommerce 3 上測試並有效。
刷新運輸緩存(有時需要) :
1) 首先清空您的購物車。
2) 此代碼已保存在您的 function.php 文件中。
3) 進入運輸區域設置並禁用一個“統一費率” (例如)和“保存”。 然后重新啟用“統一費率”和“保存”。 你已經完成了,你可以測試它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.