我正在Woocommerce中开发一个函数,该函数通过WC () -> session-> get ('shipping_calculated_cost')
接收变量,但是我想要的是,一旦钩子被激活,消息的价格就会通过{{1}刷新}函数。当前发生在我身上的是它使用了session变量的值,但是当我选择woocommerce_package_rates
的下一个元素刷新第一个保存的值时会更新它。
例如,如果在dropdownlist
中选择的值为10,它将存储该值但不显示它。当我选择另一个值时,它将显示先前选择的值,在这种情况下为10。
在此函数中,$cost
的值是由$cost
给出的数字,在这种情况下,我将值设置为10。此外,它具有要更新的活动dropdownlist
。
AJAX
此函数接收将存储在会话变量中的值。
function guardar_variable(){
$costo = 10;
WC()->session->set( 'shipping_calculated_cost', $costo );
foreach ( WC()->cart->get_shipping_packages() as $package_key => $package ):
WC()->session->set( 'shipping_for_package_' . $package_key, false );
endforeach;
header('Content-type: application/json');
echo json_encode($costo);
die();
}
add_action('wp_ajax_nopriv_guardar_variable','guardar_variable',9);
add_action('wp_ajax_guardar_variable','guardar_variable',9);
在我的JS脚本中,有以下一行刷新页面。这样做会刷新2次。并且它不能被更新一次。这给我带来了一个问题,就是付款和运输负担的延迟。
add_filter( 'woocommerce_package_rates', 'adjust_shipping_rate', 11 );
function adjust_shipping_rate( $rates ){
foreach ($rates as $rate):
$cost = $rate->cost;
$rate->cost = WC()->session->get( 'shipping_calculated_cost' );
endforeach;
return $rates;
}