Estoy buscando una manera de revisar mi carrito de compras, de modo que no permita que los clientes recojan artículos de compra y alquiler al mismo tiempo (básicamente obligándolos a hacer dos pedidos de cada tipo). Para ello he creado dos categorías de artículos (alquiler y compra).
Cuando alguien intenta agregar un artículo de una categoría diferente a la ya elegida, aparece un mensaje que dice que no puede elegir ese artículo.
Pero… no puedo hacer que funcione correctamente. El artículo no muestra el mensaje o se agrega al carrito de todos modos. Ni siquiera podemos incrementar artículos del mismo tipo que ya están en el carrito…
te paso mi codigo:
* Check products in the cart (don't allow rent products to be with buy products)
* @author Nicolas BOUTINAUD
* @return WooCommerce Cart Validation
*/
function checkProductsInCart() {
// If the cart is empty, it's valid.
if(WC()->cart->cart_contents_count == 0){
return true;
}
$productsNotMixed = false;
$rentInCart = false;
$buyInCart = false;
while ($productsNotMixed != true)
{
// Loop through all products in the cart
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item)
{
$product = $cart_item['data'];
// If Cart has category "Location", set $rentInCart to true
if ( has_term( 'location', 'product_cat', $product->get_id() ) )
{
$rentInCart = true;
if ( has_term( $term != 'Location', 'product_cat', $product->get_id() ) )
{
$buyInCart = true;
$productsNotMixed = true;
wc_add_notice( 'Les produits à l'achat ne peuvent pas être commandés en même temps que les produits proposés à la location.', 'error' );
return false;
break;
}
else
{
$productsNotMixed = true;
return $valid;
}
}
else
{
$productsNotMixed = true;
return $valid;
}
}
}
}
add_filter( 'woocommerce_add_to_cart_validation', 'checkProductsInCart',10,3);´´´
.