add_action('wp_ajax_wc_shipper_set_rate', 'wc_shipper_set_rate');
add_action('wp_ajax_nopriv_wc_shipper_set_rate', 'wc_shipper_set_rate');
function wc_shipper_set_rate(){
$object_id = strval($_POST['object_id']);
$order_id = intval($_POST['order_id']);
$rate = false;
//Find rate by object_id
$rates = WC()->session->get('wc_shipper_rates');
foreach ($rates as $_rate) {
if ($_rate['object_id'] == $object_id) {
WC()->session->set('wc_shipper_chosen_rate', $_rate);
$rate = $_rate;
}
}
if($rate){
//Calculate new totals
$totals = WC()->cart->get_totals();
$new_total = floatval($totals['total']) - floatval($totals['shipping_total']) + floatval($rate['amount']);
// Set cart totals
WC()->cart->set_shipping_total($rate['amount']);
WC()->cart->set_total($new_total);
$totals = WC()->cart->get_totals();
WC()->cart->calculate_shipping();
WC()->cart->calculate_totals();
// Change shipping total in order
$order = wc_get_order($order_id);
$order->set_shipping_total($rate['amount']);
$order->set_total($new_total);
$order->save();
// Change shipping total in session
WC()->session->set('shipping_total', $rate['amount']);
WC()->session->set('total', $new_total);
WC()->session->set('cart_totals', $totals);
update_post_meta($order_id, '_wc_shipper_object_id', $rate['object_id']);
}
echo json_encode(['status' => 'ok', 'totals' => $totals], JSON_UNESCAPED_UNICODE);
exit;
}
В WP-ADMIN видны новые итоги и сумма доставки:
Новые итоги в заказе Но на На странице оформления заказа есть старые итоги. Новые итоги видны после двойного обновления страницы.
Старые итоги
Метод WC бесполезен.
Общую и общую сумму доставки я установил через AJAX: [code]add_action('wp_ajax_wc_shipper_set_rate', 'wc_shipper_set_rate'); add_action('wp_ajax_nopriv_wc_shipper_set_rate', 'wc_shipper_set_rate');
echo json_encode(['status' => 'ok', 'totals' => $totals], JSON_UNESCAPED_UNICODE); exit; } [/code] В WP-ADMIN видны новые итоги и сумма доставки: Новые итоги в заказе [b]Но на На странице оформления заказа есть старые итоги. Новые итоги видны после двойного обновления страницы.[/b] Старые итоги Метод WC бесполезен. [code]WC()->cart->calculate_shipping(); WC()->cart->calculate_totals(); [/code] Я использую последнюю версию WooCommerce и Wordpress.
В настоящее время я работаю над реализацией функциональности AJAX на своей странице WooCommerce cars.php. Цель состоит в том, чтобы позволить пользователям применять купоны, не обновляя всю страницу. Несмотря на мои успехи, я столкнулся с проблемой:...
Я унаследовал проект PHP, он написан на Laravel 9.2.
В приложении есть определенная конечная точка, над которой нужно немало поработать. Я опубликую код ниже.
Он принимает запрос POST с массивом идентификаторов в теле. Перебирает идентификаторы и...
Я внес некоторые изменения в свою кассу WooCommerce (код, который размещает код скидки в другом месте). Он работает, но когда этот код добавляется и покупатель применяет код скидки, вся информация, которую клиент уже заполнил, удаляется, и ему...
Я внес некоторые изменения в свою кассу WooCommerce (код, который размещает код скидки в другом месте). Он работает, но когда этот код добавляется и покупатель применяет код скидки, вся информация, которую клиент уже заполнил, удаляется, и ему...
У меня есть эта ситуация: я получаю пользователя от внешнего портала, который прибывает на веб -сайт с параметром $ _get, содержащим зашифрованную строку с различными подробностями о пользователе.
Если «Нормальный пользователь» пытается получить...