下面是我用来定义和设置基于购物车总数的运费的函数:
function adjust_shipping_rate( $rates, $package ) {
if (is_admin() && !defined('DOING_AJAX')) {
return;
}
$cart_total = WC()->cart->get_subtotal();
// Define shipping rates based on cart total
$shipping_rates = [
['min' => 0, 'max' => 50, 'rate' => 20],
['min' => 50.1, 'max' => 100, 'rate' => 15],
['min' => 100.1, 'max' => 200, 'rate' => 10],
['min' => 200.1, 'max' => PHP_INT_MAX, 'rate' => 5]
];
// Find the appropriate shipping rate
foreach ($shipping_rates as $range) {
if ($cart_total >= $range['min'] && $cart_total <= $range['max']) {
foreach ($rates as $rate_key => $rate) {
if (strpos($rate_key, 'flat_rate') === 0) {
$rates[$rate_key]->cost = $range['rate'];
}
}
break;
}
}
return $rates;
}
add_filter( 'woocommerce_package_rates', 'adjust_shipping_rate', 10, 2 );
我确认,如果没有这个功能,运费货币正在正确转换,但有了这个功能,成本保持不变,但格式正在转换.例如,而不是5美元航运转换为4,61 €,它转换为5,00 €.
我们正在使用WooPayments及其多货币费率.
如何获取当前货币兑换率,以便在函数中自己进行兑换?我知道get_woocommerce_currency()抓取货币代码,所以我希望有一些东西可以抓取WooPayments中设置的货币汇率,但我找不到任何类似的情况.
我是不是搞错了?我不想安装一个插件的运费,如果我没有.