add_filter('woocommerce_package_rates', 'free_shipping_for_specific_products', 10, 2);
function free_shipping_for_specific_products($rates, $package) {
    $specific_product_ids = array(1, 2, 3); // IDs der Produkte, für die kostenloser Versand aktiviert werden soll
    $is_free_shipping = false;

    foreach ($package['contents'] as $item) {
        if (in_array($item['product_id'], $specific_product_ids)) {
            $is_free_shipping = true;
            break;
        }
    }

    if ($is_free_shipping) {
        foreach ($rates as $rate_id => $rate) {
            if ('free_shipping' === $rate->method_id) {
                $rates[$rate_id]->cost = 0;
                break;
            }
        }
    }

    return $rates;
}