Добрый день, искал в свободном доступе код, который разрешает разрешает добавление только одного товара в корзину, но все они не работают, вот один из многих которые я перепробовал:
add_filter( 'woocommerce_add_to_cart_validation', 'custom_only_one_in_cart', 99, 2 );
function custom_only_one_in_cart( $passed, $added_product_id ) {
// empty cart first: new item will replace previous
wc_empty_cart();
// display a message if you like
wc_add_notice( 'Max number of items in cart reached!', 'notice' );
return $passed;
}
Это возможно из-за того, что у меня идёт добавление товара одним кликом по кнопке через ajax обработку, наверное знаете этот код.
Подскажите, пожалуйста, как решить эту проблему?
Может есть возможность через js как-то отследить есть ли в корзине товар и если он есть просто перенаправлять на оформление?
ajax обработка кнопки
$('.s1_oneclick_btn').click(function(e) {
e.preventDefault();
$(this).addClass('adding-cart');
var product_id = '14';
var ajax_url = "/wp-admin/admin-ajax.php"
$.ajax ({
url: ajax_url,
type:'POST',
data:'action=oneclick&product_id=' + product_id + '&quantity=1',
})
.done(function() {
var url = "http://a0368503.xsph.ru/checkout/";
$(location).attr('href',url);
});
});
И конечная в functions.php добавление товара в корзину:
function oneclick() {
$product_id = $_POST['product_id'];
$variation_id = $_POST['variation_id'];
$quantity = $_POST['quantity'];
if ($variation_id) {
WC()->cart->add_to_cart( $product_id, $quantity, $variation_id );
} else {
WC()->cart->add_to_cart( $product_id, $quantity);
}
$items = WC()->cart->get_cart();
global $woocommerce;
$item_count = $woocommerce->cart->cart_contents_count;
die();
}