2016-09-21 5 views
0

重複するスレッドがあることを認識していますが、解決策が機能していない(100%) - これは私がhttps://stackoverflow.com/a/24027583/1826992で解決した解決策です。基本的には、AJAXの呼び出しによってカートからアイテムが削除されていますが、ページを更新するまでミニカートは更新されません。私はここにいる:Woocommerce ajax from

add_action('wp_footer', 'add_js_to_wp_wcommerce'); 

function add_js_to_wp_wcommerce(){ ?> 
    <script type="text/javascript"> 
    jQuery('body').on('click',".remove",function(){ 
     var product_id = jQuery(this).attr("data-product_id"); 
       console.log(product_id); 
     jQuery.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: "/wp-admin/admin-ajax.php", 
      data: { action: "product_remove", 
        product_id: product_id 
      },success: function(data){ 
       console.log(data); 
      } 
     }); 

     return false; 
    }); 
    </script> 
<?php } 



add_action('wp_ajax_product_remove', 'product_remove'); 
add_action('wp_ajax_nopriv_product_remove', 'product_remove'); 
function product_remove() { 
    $cart = WC()->instance()->cart; 
    $id = $_POST['product_id']; 
    $cart_id = $cart->generate_cart_id($id); 
    $cart_item_id = $cart->find_product_in_cart($cart_id); 

    if($cart_item_id){ 
     $cart->set_quantity($cart_item_id,0); 
    } 
} 

私はこれがすべて "行動"までうまくいくようだと述べた。この時点でのConsole.log(data)は "0"しか保持しません。私はこれがproduct_idを持っていると仮定します。

ご協力いただきありがとうございます。あなたのPHP関数&から

答えて

1

戻り何かが復帰後wp_die()を使用して、私はそれらの変更を実装しました

+0

文書準備文の中で、あなたのjsを包みます。何を返すべきかに関する勧告?私は$カートを返しましたが、ページをリロードするまでカートがまだリフレッシュされていません。ありがとう。 – epluribusunum

+0

更新されたカートを返す必要がある、またはページのカートリストを更新したことに基づいて、カートが更新されたというメッセージだけを返す必要があります – madalinivascu

+0

カートリストを更新する方法は分かりますか?申し訳ありませんが、私はこれで少し苦労しています。前もって感謝します。 – epluribusunum

関連する問題