Если на пальцах, то как нибудь так, это чисто теоретически ну и соответственно бесплатная доставка должна быть включена
function wpp_is_available_free( $is_available ) {
$free_products = [ 22, 55, 44, 66, 22 ];
foreach ( WC()->cart->get_cart() as $key => $item ) {
if ( in_array( $item[ 'product_id' ], $free_products ) ) {
return true;
}
}
return $is_available;
}
add_filter( 'woocommerce_shipping_free_shipping_is_available', 'wpp_is_available_free', 30 );
А вообще, ну е-мое
Я не программист, и стандартными настройками Woocommerce не могу настроить эти функции.
Сходите на фриланс, наймите того кто умеет.