В настоящее время я делаю интернет-магазин с WooCommerce, и у меня есть корзина, в которую вы можете получить доступ на любой странице в любое время, вы можете обновить количество продукта в самой корзине. Проблема возникает, когда я делаю это, некоторые значения перепутаны. Например, когда я пытаюсь получить WC()->cart->total
, он возвращает 0.WooCommerce ajax update messing up values
Но когда я иду на страницу проверки, он показывает все правильные данные в корзине, так что это заставляет меня думать, что мне не хватает action
. Мне нужно бежать после корректировки чего-то в тележке. Я смотрел через функции set_quantity()
, и он автоматически обновляет итоговое значение $this->calculate_totals();
(попробовал это также вручную).
функция Ajax:
public function set_quantity($direction = false, $product_id) {
$response = array();
$justOne = false;
if($_GET['data']['direction'] && $_GET['data']['product_id']) {
$direction = $_GET['data']['direction'];
$product_id = $_GET['data']['product_id'];
$justOne = true;
}
foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
$_product = $values['data'];
if ($product_id == $_product->id) {
if($justOne && $direction == 'minus') {
WC()->cart->set_quantity($cart_item_key, $values['quantity'] - 1, true);
$response['success']['quantity'] = $values['quantity'] - 1;
} else if($justOne && $direction == 'plus') {
WC()->cart->set_quantity($cart_item_key, $values['quantity'] + 1, true);
$response['success']['quantity'] = $values['quantity'] + 1;
} else {
WC()->cart->set_quantity($cart_item_key, $values['quantity'] + $direction, true);
}
$response['success']['line_total'] = '€ '.number_format((float)$response['success']['quantity'] * $_product->price, 2, '.', '');
$response['success']['cart_count'] = WC()->cart->get_cart_contents_count();
$response['success']['total'] = number_format((float)WC()->cart->total, 2, '.', '');
die(json_encode($response));
}
}
return false;
}
вы пытались эту процедуру $ woocommerce-> cart-> get_total(); WC() -> cart-> get_total(); ? – Gopalakrishnan
, когда и как вы называете эту функцию, которую вы предоставили? – Reigel
@Gopalakrishnan Я думаю, что я пробовал, что один тоже не помню, будет проверять, когда у меня будет время, спасибо за ваш ответ – LVDM