Set Shipping Method

 avatar
user_4366086
php
a year ago
890 B
12
Indexable
Never
add_filter( 'woocommerce_package_rates', 'specific_products_shipping_methods', 10, 2 );
function specific_products_shipping_methods( $rates, $package ) {
   //HERE set the product category in the array (ID, slug or name)
    $terms = array( 'rubber-gloves' ); 
    $taxonomy = 'product_cat'; 

	$catTotalCost = 0;

    //Loop through cart items checking for defined product IDs
    foreach( $package['contents'] as $cart_item ) {
        if ( has_term( $terms, $taxonomy, $cart_item['product_id'] ) ){
            $quantity = $cart_item['quantity'];
			$price = $cart_item['data']->get_price();
			$itemTotalCost = $quantity * $price;
			$catTotalCost += $itemTotalCost;
        }
    }


	foreach( $rates as $rate_id => $rate ) {
		if($catTotalCost > 0 && $catTotalCost < 250){
			unset( $rates['free_shipping:3'] );
		}else{
			unset( $rates['flat_rate:4'] );
		}
	}
    return $rates;
}