Obecnie robię sklep internetowy z WooCommerce i mam ten koszyk wykonany, że można uzyskać dostęp na dowolnej stronie w dowolnym momencie, możesz zaktualizować ilość produktu w samym koszyku. Problem pojawia się zawsze, gdy to robię, niektóre wartości są pomieszane. Na przykład, gdy próbuję uzyskać WC()->cart->total
zwraca 0.Aktualizacja ajax WooCommerce psuje wartości
Ale kiedy idę do strony kasy pokazuje wszystkie prawidłowe dane koszyka, więc to sprawia, że myślę, że brakuje mi jakiegoś action
muszę biec po dostosowaniu czegoś w opałach. Przeglądam funkcje set_quantity()
i automatycznie odświeżam łącznie z $this->calculate_totals();
(wypróbowałem również ręcznie).
Ajax Funkcja:
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;
}
nie spróbować tej procedury $ woocommerce-> koszyk-> get_total(); WC() -> cart-> get_total(); ? – Gopalakrishnan
kiedy i jak wywołujesz tę funkcję, którą podałeś? – Reigel
@Gopalakrishnan Wydaje mi się, że próbowałem tego, który równie dobrze nie pamiętam, przetestuje, gdy będę miał czas, dziękuję za odpowiedź – LVDM