Добрый день. Прошу прощения за долгий ответ - давно не заходил на форум.
К сожалению, решения пока не знаю - периодически выскакивает ошибка. Сам я в этом недостаточно разбираюсь, а автор не отвечает. Если узнаю - обязательно поделюсь! (надеюсь, что и другие участники обсуждения)
В админке никаких настроек не делал.
Поскольку код не работал, я его немного упростил (возможно, в чем-то как раз и сделал ошибку, но он хотя бы нормально заработал...) и вставил
в function.php, а в магазине прописал цены в USD. За исключением вышеназванной ошибки работает отлично)))
Вот упрощенная версия этого кода (если кто-то укажет на ошибку, буду благодарен))
add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);
function my_woocommerce_get_price($price, $_product) {
// параметры ------------------------------------
$kurs_cb = get_currency_cb('USD'); // получить курс USD
// --------------------------------------------------
$kurs_current = ($kurs_cb['kurs'] <= 0) ? $kurs_current : $kurs_cb['kurs'];
$new_price = $price * $kurs_current;
return $new_price; // новая цена
}
function get_currency_cb($code_valute = 'USD' ) {
$kurs_cb_xml = simplexml_load_file("
http://www.cbr.ru/scripts/XML_daily.asp");
if ($kurs_cb_xml === false) {
$kurs_cb = 70;
return $kurs_cb;
}
{
foreach ($kurs_cb_xml->Valute as $valute) {
if ((string)$valute->CharCode == $code_valute) {
$kurs_cb['date'] = (string)$kurs_cb_xml['Date'];
$kurs_cb['kurs'] = (string)$valute->Value;
$kurs_cb['code'] = $code_valute;
break;
}
}
$kurs_cb['kurs'] = round(str_replace(',','.',$kurs_cb['kurs']),2);
return $kurs_cb;
}
}