2014-12-24 18 views
6

Mam niestandardowy przycisk na stronie mojej kasy, po kliknięciu Dodaję produkt do koszyka za pośrednictwem AJAX.update_order_review() na przycisku kliknij

JS:

$('#add_domain_product').on('click', function() { 
     $.ajax({ 
      url: Ajax.ajaxurl, 
      type: "POST", 
      data: { 
       action: 'add_domain_product', 
      }, 
      success: function (data, status, xhr) { 
       // update command is executed. 
       console.log(data); 
      } 

     }); 
    }) 

PHP:

add_action('wp_ajax_add_domain_product', 'bs_add_domain_product'); 
function bs_add_domain_product() { 
    global $woocommerce; 
    $woocommerce->cart->add_to_cart('633'); 
    exit(); 
} 

Po tym, że muszę odświeżyć przegląd zamówień, więc wyświetla mojego nowo dodany produkt również. Jak mogę to zrobić?

+0

właśnie miałem zadać bardzo podobne pytanie. Rozwiązałeś to? Teoretycznie powinieneś być w stanie to zrobić, używając funkcji 'WC_AJAX :: update_order_review();' w swojej funkcji 'bs_add_domain_product()'. To * powinno * zwrócić fragmenty do aktualizacji kasy; jednak obecnie zwraca mi dość bezużyteczne "-1", co oznacza, że ​​istnieje potencjalnie błąd w przekazywaniu tej funkcji przez WooCommerce. Albo zupełnie nie rozumiem tego. – indextwo

+0

Zobacz zaakceptowane rozwiązanie, działa jak urok. – user1049961

Odpowiedz

16

Wszystko, co musisz zrobić, to wywołać spust na ciele, aby zaktualizować wózek.

$('body').trigger('update_checkout'); 

To automatycznie wywołać wszystkie kolejne wywołania AJAX potrzebne, aby odświeżyć informacje na wózku, w tym przeglądu zamówienia.

+0

DZIĘKUJEMY SOOOO MUCH !!! – Zander

1

Na stronie Checkout:

jQuery(document.body).trigger("update_checkout") 

Na stronie koszyk:

jQuery(document.body).trigger("wc_update_cart"); 
Powiązane problemy