WooCommerce – Conditionally enable shipping for virtual products

You can try following code:

add_filter('woocommerce_cart_needs_shipping_address','fun_return_shipping_param');
function fun_return_shipping_param($needs_shipping_address)
{

    $items = WC()->cart->get_cart();
    $product_ids = array();
    foreach($items as $item => $values) 
    { 
            $product_ids[] = $values['data']->get_id(); //You can get product id of product added in cart
    }
    if(in_array($your_product_id, $product_ids)) // check whether your product is in cart
       $needs_shipping_address = true;

    return $needs_shipping_address;

}