Обновите var сессии с помощью AJAX в Woocommerce - PullRequest
2 голосов
/ 11 апреля 2019

Я разрабатываю функцию в Woocommerce, где она получает переменную с WC () -> session-> get ('shipping_calculated_cost'), но я хочу, чтобы, как только этот хук активировался, цена сообщения обновляется с помощью функции woocommerce_package_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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...