Php 在Woocommerce中使用AJAX更新会话变量

Php 在Woocommerce中使用AJAX更新会话变量,php,ajax,wordpress,woocommerce,Php,Ajax,Wordpress,Woocommerce,我正在Woocommerce中开发一个函数,它接收一个带有WC()->session->get('shipping\u calculated\u cost')的变量,但我想要的是,一旦钩子被激活,消息的价格就会通过Woocommerce\u package\u rates函数刷新。目前发生在我身上的情况是,它接受会话变量的值,但当我选择dropdownlist的下一个元素刷新第一个保存的值时,它会被更新 例如,如果在$cost中选择的值为10,则会存储该值,但不会显示该值。当我选择另一个值时,它

我正在Woocommerce中开发一个函数,它接收一个带有
WC()->session->get('shipping\u calculated\u cost')
的变量,但我想要的是,一旦钩子被激活,消息的价格就会通过
Woocommerce\u package\u rates
函数刷新。目前发生在我身上的情况是,它接受会话变量的值,但当我选择
dropdownlist
的下一个元素刷新第一个保存的值时,它会被更新

例如,如果在
$cost
中选择的值为10,则会存储该值,但不会显示该值。当我选择另一个值时,它会显示以前选择的值,在本例中为10

在这个函数中,
$cost
的值是一个由
dropdownlist
给出的数字,在这种情况下,我将值设为10。此外,它还有活动的
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);
此函数接收将存储在会话变量中的值

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;
}
在我的JS脚本中,我有以下行刷新页面。这样,它会刷新2次。而且它不能一次更新。这给我带来了一个问题,那就是延迟支付和运输的负担

$('body').trigger('update_checkout');