2016-02-22 2 views
1

Как программно удалить элемент из корзины Woocommerce с помощью AJAX? Я попытался поместить функцию в свой файл functions.php и получить доступ к ней, но ничего не удаляется. Я пробовал жесткий код 299, но он не удаляет. Вот что я сделал:WooCommerce программно удаляется из корзины

functions.php

function remove_item_from_cart() { 
    $cart = WC()->instance()->cart; 
    $id = 299; 
    $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); 
    } 
    return true; 
} 

темы/мин/main.js

$.ajax({ 
    type: 'POST', 
    dataType: 'text', 
    url: "http://www.../wp/wp-content/themes/mine/functions.php", 
    data: { 
     action: 'remove_item_from_cart' 
    }, 
    success: function(data) { 
     console.log(data); 
    } 
}); 

ответ

6

Используйте правильный метод Ajax в WordPress, как это: Это работало отлично для меня.

//functions.php

function remove_item_from_cart() { 
    $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); 
     return true; 
    } 
    return false; 
    } 

    add_action('wp_ajax_remove_item_from_cart', 'remove_item_from_cart'); 
    add_action('wp_ajax_nopriv_remove_item_from_cart', 'remove_item_from_cart'); 

//main.js

$.ajax({ 
     type: "POST", 
     url: 'http://localhost/your_site/wp-admin/admin-ajax.php', 
     data: {action : 'remove_item_from_cart','product_id' : '4'}, 
     success: function (res) { 
      if (res) { 
       alert('Removed Successfully'); 
      } 
     } 
    }); 
+0

Спасибо, что сработало. Я точно не знал, как делать ajax в WP, Google мало помог. – timpiele

+0

@timpiele, пожалуйста, примите мой ответ, если он вам поможет. :) –

+0

Я не могу голосовать :( – timpiele

0

Для WooCommerce 3.0+ вы можете сделать это с помощью функции

function findCartItemKey($cartItems, $productId){    
    foreach($cartItems as $cartKey => $item){ 
    $product = $item['data']; 
    if($product->get_id() == $productId){ 
      return $cartKey; 
    }  
    return false; 
    }  
} 

global $woocommerce; 
$cartItemKey = findCartItemKey($woocommerce->cart->get_cart()) 
$woocommerce->cart->remove_cart_item($cartItemKey); 
встроенный remove_cart_item()
Смежные вопросы