You can use woocommerce_shortcode_products_query
filter to change orderby
argument. it will set orderby
as post__in
in [products]
shortcode query. I have tested and it is working fine for me. you can take reference from below code and adjust code as per your need. Let me know if this works for you!
add_filter( 'woocommerce_shortcode_products_query', 'woocommerce_shortcode_products_orderby_post_in' );
function woocommerce_shortcode_products_orderby_post_in( $args ) {
if( isset( $args['orderby'] ) ) {
$args['orderby'] = 'post__in';
}
return $args;
}