yeah empty price should also work, but i see in the default single-product/add-to-cart/variable.php template that there is no check for whether an item is_purchasable
or not…. unlike with simple products.
you could override the template with your theme and then wrap the
<div class="single_variation_wrap" style="display:none;">
complete div with some conditional logic like so:
<?php if ( $product->is_purchasable() ) { ?>
<div class="single_variation_wrap" style="display:none;">
<div class="single_variation"></div>
<div class="variations_button">
<input type="hidden" name="variation_id" value="" />
<?php woocommerce_quantity_input(); ?>
<button type="submit" class="single_add_to_cart_button button alt"><?php echo apply_filters('single_add_to_cart_text', __( 'Add to cart', 'woocommerce' ), $product->product_type); ?></button>
</div>
</div>
<div><input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" /></div>
<?php } ?>