If you have the default customer location set to “Geolocate” in WooCommerce -> Settings, you can use the following snippet to make the country field unclickable.
add_filter( 'woocommerce_checkout_fields', 'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
$fields['billing']['billing_country']['custom_attributes'] = array(
'disabled' => 'disabled',
);
$fields['shipping']['shipping_country']['custom_attributes'] = array(
'disabled' => 'disabled',
);
return $fields;
}
You can use this plugin to add it.
Keep in mind that this only disables the field on the client side, meaning anyone with HTML knowledge can modify the field and select any country they want.
If you want to do this the right way, you should implement server-side validation to prevent customers who don’t meet specific conditions from placing an order.
There are several plugins available that can assist with this, for example: https://woocommerce.com/products/order-restrictions-for-woocommerce/
Free alternative: https://www.ads-software.com/plugins/woo-product-country-base-restrictions/
Cheers!