简体   繁体   中英

Allow add to cart for specific products based on cart total in WooCommerce

In woocommerce, I am trying to find a way to only allow a product to be added a to cart only when a specific cart total amount is reached.

Example: We want to sell a bumper sticker for $1 , but only if a user already has $25 worth of other products already in the cart. This is similar to Amazon's "add on" feature. However I can't find a similar WooCommerce plugin or function.

I have tried yet some code without success… Any help will be appreciated.

Can be done with a custom function hooked in woocommerce_add_to_cart_validation filter hook, where you will define:

  • a product Id (or multiple product Ids).
  • the threshold cart amount to be reached.

It will avoid for those defined products to be added to cart (displaying a custom notice) until that specific cart amount is reached.

The code:

add_filter( 'woocommerce_add_to_cart_validation', 'wc_add_on_feature', 20, 3 );
function wc_add_on_feature( $passed, $product_id, $quantity ) {

    // HERE define one or many products IDs in this array
    $products_ids = array( 37, 27 );

    // HERE define the minimal cart amount that need to be reached
    $amount_threshold = 25;

    // Total amount of items in the cart after discounts
    $cart_amount = WC()->cart->get_cart_contents_total();

    // The condition
    if( $cart_amount < $amount_threshold && in_array( $product_id, $products_ids ) ){
        $passed = false;
        $text_notice = __( "Cart amount need to be up to $25 in order to add this product", "woocommerce" );
        wc_add_notice( $text_notice, 'error' );
    }
    return $passed;
}

Code goes in function.php file of your active child theme (active theme).

Tested and works.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM