Я разрабатываю функцию в 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');