Следующее будет скрывать цены за пределами Соединенного Королевства в зависимости от клиента страна с географическим местоположением :
add_filter( 'woocommerce_get_price_html', 'country_geolocated_based_hide_price', 10, 2 );
function country_geolocated_based_hide_price( $price, $product ) {
// Get an instance of the WC_Geolocation object class
$geo_instance = new WC_Geolocation();
// Get geolocated user geo data.
$user_geodata = $geo_instance->geolocate_ip();
// Get current user GeoIP Country
$country = $user_geodata['country'];
return $country !== 'GB' ? '' : $price;
}
Код помещается в файл function.php вашей активной дочерней темы(или активная тема).Протестировано и работает.
Если вы хотите включить эту функцию геолокации только для незарегистрированных клиентов, используйте следующее:
add_filter( 'woocommerce_get_price_html', 'country_geolocated_based_hide_price', 10, 2 );
function country_geolocated_based_hide_price( $price, $product ) {
if( get_current_user_id() > 0 ) {
$country = WC()->customer->get_billing_country();
} else {
// Get an instance of the WC_Geolocation object class
$geo_instance = new WC_Geolocation();
// Get geolocated user geo data.
$user_geodata = $geo_instance->geolocate_ip();
// Get current user GeoIP Country
$country = $user_geodata['country'];
}
return $country !== 'GB' ? '' : $price;
}
Доступна обновленная версия этого кода в этом ответе во избежание ошибки бэкэнда.
Я добавил в функцию при запуске:
if ( is admin() ) return $price;
Код входит в файл function.php вашегоАктивная детская тема (или активная тема).Проверено и работает.