If you have a Product in your WooCommerce for which only one variation of the product can be added in the cart , you can use this simple snippet to get that going.
/**
* @snippet WooCommerce Varitaion Sold Individually
* @author Naveen Yellamaddi https://premiumwp.ncy.design
* @compatible WooCommerce 3.7.0
*/
add_filter( 'woocommerce_add_to_cart_validation', 'allowed_products_variation_in_the_cart', 10, 5 );
function allowed_products_variation_in_the_cart( $passed, $product_id, $quantity, $variation_id, $variations) {
$product_a = 14576;
$product_b = 14091;
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$cart_product_id = $cart_item['product_id'];
if ($cart_item['variation_id']) {
$cart_product_id = $cart_item['variation_id'];
}
if ( ($cart_product_id == $product_a && $variation_id == $product_b) || ($cart_product_id == $product_b && $variation_id == $product_a) ) {
wc_add_notice(__('You can\'t add this product.', 'domain'), 'error');
$passed = false; // don't add the new product to the cart
// We stop the loop
break;
}
}
return $passed;
}
Here product_a is the product id and product_b is the variation id.
If you want to make all variations of a single product want to be purchased alone you can use this plugin https://wordpress.org/plugins/woo-sold-individually-for-variations/
You can use this snippet to enable sold alone for only a particular variation of a product to be sold alone.
How to add this snippet?
You can add this snippet to your child themes functions.php , We don't recommend adding code to your main theme if its not developed by you. Otherwise you can use a simple plugin https://wordpress.org/plugins/code-snippets/
Express your views in the comment section below.