Вы можете использовать класс WC_Geolocation
для определения местоположения пользователя, а затем исключить отображение определенного продукта путем изменения запроса продуктов.
, чтобы вы могли использовать следующий код для достижения желаемых результатов.
На основании предложения LoicTheAztec я включил еще одну проверку, если пользователь вошел в систему и его страна также является США, поэтому мы также должны исключить продукт независимо от его местоположения.
function exclude_product_by_geoloacted_user_country($q)
{
$location = WC_Geolocation::geolocate_ip();
$country = $location['country'];
$exluded_product = [28, 27]; //you can add here the products that you want to exclude by id
if (is_user_logged_in() && WC()->customer->get_billing_country() == "US") {
$q->set('post__not_in', (array) $exluded_product);
return $q;
}
if ($country == "US") { //here you can specify the country code
$q->set('post__not_in', (array) $exluded_product);
}
return $q;
}
add_action('woocommerce_product_query', 'exclude_product_by_geoloacted_user_country');
поместите указанный выше код в functions.php
и измените идентификаторы продуктов, и все готово.
код протестирован с темой StoreFront.