2016-09-02 8 views
2

私はこのコードを実装してAjaxでカートから商品を取り除くことができました。しかし、Variable Productでは動作しませんでした。woocommerceでajaxを使用して可変商品をカートから取り除く

/** 
* Remove Cart via Ajax 
*/ 
function product_remove() { 
    global $wpdb, $woocommerce; 
    session_start(); 
    $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); 
    } 
} 
add_action('wp_ajax_product_remove', 'product_remove'); 
add_action('wp_ajax_nopriv_product_remove', 'product_remove'); 

$ variation_idを$ cart_idに渡す必要があるかもしれませんが、それを行う方法はわかりません。

+0

また、カート内の変数を削除しようとするとエラーが発生します。 PHP警告:call_user_func_array()は、パラメータ1が有効なコールバックであり、配列も文字列もないと想定しています – cutez7boyz

答えて

2

$product_idの代わりに$cart_item_keyを使用してカートにリンクを作成します。

次に、サーバー側では既に$cart->generate_cart_id($id);メソッドを使用する必要はありません。

私の作品の例を参照してください。これは、ため正常に動作

/** 
* Remove Cart via Ajax 
*/ 
function product_remove() { 
    global $wpdb, $woocommerce; 
    session_start(); 
    $cart = WC()->instance()->cart; 
    $cart_id = $_POST['product_id']; // This info is already the result of generate_cart_id method now 
    /* $cart_id = $cart->generate_cart_id($id); // No need for this! :) */ 
    $cart_item_id = $cart->find_product_in_cart($cart_id); 
    if($cart_item_id){ 
     $cart->set_quantity($cart_item_id,0); 
    } 
} 
add_action('wp_ajax_product_remove', 'product_remove'); 
add_action('wp_ajax_nopriv_product_remove', 'product_remove'); 

まず、カートの作成:

// This is the logic that create the cart 
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { ?> 
    <li class="<?php echo esc_attr(apply_filters('woocommerce_mini_cart_item_class', 'mini_cart_item', $cart_item, $cart_item_key)); ?>"> 
     // Remove product link 
     <a href="#" onclick="return js_that_call_your_ajax(this);" data-product_id="<?php echo esc_attr($cart_item_key); ?>">&times;</a> 
     // Other product info goes here... 
    </li> 
<?php } 

サーバー側で今すぐ変更を私!

関連する問題