2014-12-24 17 views
6

Ödeme sayfamda özel bir düğme var, tıklattığınızda AJAX ile ürün sepetine ürün ekliyorum.update_order_review() on-button düğmesini tıklayın

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: o da benim yeni eklenen ürünü görüntüler böylece Bundan sonra

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(); 
} 

, ben, sipariş gözden yenilemek gerekiyordu. Bunu nasıl yapabilirim?

+0

Ben çok benzer bir soru sormak üzereydim. Bunu çözdün mü? Teoride, bunu 'bs_add_domain_product() 'işlevindeki' WC_AJAX :: update_order_review(); 'gibi bir şey kullanarak yapabilmelisiniz. Bu *, ödeme güncellemesi için parçaları iade etmelidir; ancak şu anda bana göre oldukça işe yaramaz bir '-1' döndürüyor, bu da WooCommerce’in belirli bir işlevi yerine getirmesinde bir hata olabileceği anlamına geliyor. Yoksa tamamen yanlış anladım. – indextwo

+0

Kabul edilen çözüme bakın, bir çekicilik gibi çalışır. – user1049961

cevap

16

Tüm yapmanız gereken, arabayı güncellemek için gövde üzerinde bir tetikleyici aramaktır.

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

Bu otomatik sipariş incelemesini içeren sepeti bilgilerini yenilemek için gerekli tüm müteakip AJAX çağrıları, arayacak. Ödeme sayfasında

+0

SİZ SOOOO MUCH TEŞEKKÜR EDERİZ !!! – Zander

1

:

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

Sepet sayfasında:

jQuery(document.body).trigger("wc_update_cart"); 
İlgili konular