Permet de ne pas multiplier la présence du produit dans le panier. (dans le cas où une personne sort du checkout, puis y revient en cliquant un ‘add to cart’)
A mettre dans function.php
function my_validation_handler( $passed, $product_id, $quantity, $variation_id = null, $variations = null ) {
// Get checkout url
$checkout_url = wc_get_checkout_url();
// Set variable
$in_cart = false;
// Loop
foreach( WC()->cart->get_cart() as $cart_item ) {
if ( $cart_item['data']->get_id() == $product_id ) {
$in_cart = true;
break;
}
}
// True
if ( $in_cart ) {
wp_safe_redirect( $checkout_url );
exit();
} else {
// Add product to cart
WC()->cart->add_to_cart( $product_id, $quantity );
wp_safe_redirect( $checkout_url );
exit();
}
return $passed;
}
add_filter( 'woocommerce_add_to_cart_validation', 'my_validation_handler', 10, 5 );
Typiquement : Cothurnes -> abonnement ‘artistes’. Si va pas au bout du checkout, pas moyen de revenir au panier sans cliquer sur s’inscrire… donc théoriquement ajout supplémentaire du produit.
Sources: