0

function custom_shipping_class_fee($rates, $package) {
    // Define the shipping class that triggers the additional fee.
    $target_shipping_class = 'engineered-flooring'; // Replace with your actual shipping class.
    $target_shipping_class1 = 'reclaimed-flooring';
    // Initialize the additional fee amount.
    $additional_fee = 590.05; // Change this to the desired additional fee amount.
     // Check if any products in the package belong to the specified shipping class.
    $cart_contains_target_shipping_class = false;
     foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
        $product = $cart_item['data'];
        if ($product->get_shipping_class() === $target_shipping_class || $product->get_shipping_class() === $target_shipping_class1) {
            $cart_contains_target_shipping_class = true;
            break;
        }
    }
     // Loop through the shipping rates and add the additional fee if the condition is met.
    if ($cart_contains_target_shipping_class) {
        foreach ($rates as $rate_key => $rate) {
            // Modify the shipping rate you want to add the fee to.
            if ($rate->method_id === 'flat_rate') {
                //$rates[$rate_key]->cost += $additional_fee;
                 $rates[$rate_key]->cost = $additional_fee;
                break; // Stop looping after modifying one rate.
            }
        }
    }
     return $rates;
}
 add_filter('woocommerce_package_rates', 'custom_shipping_class_fee', 10, 2);

Jagdish Sarma Asked question September 12, 2023
Add a Comment