更新後,我的自定義運費規則不起作用。在更新之前,我使用以下代碼來更新運費。
add_action('woocommerce_calculate_totals', 'mysite_box_discount');
function mysite_box_discount($cart )
{
$cart->shipping_total=100;
return $cart;
}
更新後 $cart 數組的結構發生了變化,上面的代碼停止工作。現在數據以受保護數組的形式出現。我發現 $cart->get_shipping_total(); 可以給我取運費。
我還發現了以下功能來更新運費。
$cart->set_shipping_total($amount);
所以我按以下方式使用它,但它不起作用。
add_action('woocommerce_calculate_totals', 'mysite_box_discount');
function mysite_box_discount($cart )
{
$cart->set_shipping_total(100);
return $cart;
}
任何人都可以幫助我並告訴我如何使用此功能或是否有其他方法可以做到這一點。謝謝你。
您可以使用woocommerce_package_rates
filter hook 來設置運輸方式的成本,這將類似於您的舊代碼:
add_filter('woocommerce_package_rates', 'custom_shipping_costs', 10, 2 );
function custom_shipping_costs( $rates, $package ){
// Loop through shipping methods rates
foreach ( $rates as $rate_key => $rate ){
// Targeting all shipping methods except "Free shipping"
if ( 'free_shipping' !== $rate->method_id ) {
$has_taxes = false;
$taxes = [];
$rates[$rate_key]->cost = 100; // Set to 100
// Taxes rate cost (if enabled)
foreach ($rates[$rate_key]->taxes as $key => $tax){
if( $tax > 0 ){
$has_taxes = true;
$taxes[$key] = 0; // Set to 0 (zero)
}
}
if( $has_taxes )
$rates[$rate_key]->taxes = $taxes;
}
}
return $rates;
}
代碼位於活動子主題(或活動主題)的 function.php 文件中。測試和工作。
您可能需要刷新運輸緩存數據:在 Woocommerce 運輸設置中禁用、保存和啟用、保存當前運輸區域的相關運輸方式。
在這個鉤子中,如果您需要遍歷購物車項目(例如進行一些計算),您將在函數代碼中使用:
foreach( $package['contents'] as $cart_item_key => $cart_item ) {
$product = $cart_item['data']; // Get the WC_Product instance Object
// your code
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句