我正在尝试动态更新我的运输方式的运费价格。我从api获取运费,并希望在成功获取api响应的价格时更新价格。我正在使用以下代码:
function handle_api_response( $rates ) {
// api调用代码在这里.....
if ($response_code === 200){
$response_data = json_decode($response, true);
$price = $response_data['shipments']
}
add_filter( 'woocommerce_package_rates', 'set_shipping_prices', PHP_INT_MAX, 1 );
function set_shipping_prices( $rates ) {
foreach ( $rates as $rate_id => $rate ) {
$rates[ $rate_id ]->cost = $price;
}
return $rates;
}
}
上述代码不起作用,但是如果我将过滤器移出handle_api_response函数并将一些静态值设置为费用,它似乎可以工作。像这样:
function handle_api_response( $rates ) {
// api调用代码在这里.....
if ($response_code === 200){
$response_data = json_decode($response, true);
$price = $response_data['shipments']
}
}
add_filter( 'woocommerce_package_rates', 'set_shipping_prices', PHP_INT_MAX, 1 );
function set_shipping_prices( $rates ) {
foreach ( $rates as $rate_id => $rate ) {
$rates[ $rate_id ]->cost = 50;
}
return $rates;
}
我的问题是,由于我从api获取价格值,我需要将价格从api响应传递给在触发过滤器时运行的set_shipping_prices函数。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号