Hide shipping methods if a virtual product is in the cart in WooCommerce

Hide shipping methods if a virtual product is in the cart in WooCommerce on child sites.

Snippet Type

Execute on Child Sites

Snippet

add_filter( 'woocommerce_cart_needs_shipping', 'remove_virtual_product_shipping_methods' );
function remove_virtual_product_shipping_methods( $needs_shipping ){
    //Loop trough cart items
    foreach ( WC()->cart->get_cart() as $item ) {
        //If a product in cart is a vritual product remove all shipping
        if ( $item['data']->is_virtual() ) {
            $needs_shipping = false;
            break;
        }
    }
    return $needs_shipping;
}

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.