WordPress. Woocommerce. Action hook BEFORE adding to cart

What i need to do:
I want to run some checks on a product before being added to the cart.
More exactly:
I want to compare the product i am about to add to the cart, with the ones already added, to see if there are some conflicts.
An example:
Let’s say we have a product named “Both shoes”, and a product “left shoe”.
A user adds “left shoe” to the cart. Then he adds “both shoes”. I want to print an error instead of adding the “both shoes”: Sorry, but you can’t add both shoes if you’ve added left shoe to the cart. If you want to buy “both shoes”, please first remove “left shoe”.

I’ve looked at class-wc-cart.php and i found an action hook at line 811, but it’s too late! It’s after the product has been added

Read More

“do_action( ‘woocommerce_add_to_cart’, $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data );”

The add_to_cart method starts at line 705.
http://wcdocs.woothemes.com/apidocs/source-class-WC_Cart.html#705

How can my “product conflict manager” function be hooked before line 801, without hacking woocommerce?

Thank you!

Related posts

Leave a Reply

1 comment

  1. A bit late, but I think you are looking for add to cart validation, which is filterable. Here’s an over simplified version:

    function so_validate_add_cart_item( $passed, $product_id, $quantity, $variation_id = '', $variations= '' ) {
    
        // do your validation, if not met switch $passed to false
        if ( 1 != 2 ){
            $passed = false;
            wc_add_notice( __( 'You can not do that', 'textdomain' ), 'error' );
        }
        return $passed;
    
    }
    add_filter( 'woocommerce_add_to_cart_validation', 'so_validate_add_cart_item', 10, 5 );