• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Автоматический пересчет цен по курсу

Solomon Fox

Форумчанин

Stork.71

Гуру
Местный
А Вы сейчас обсуждаете плагин для курсов в каком исполнении? Для мультивалютного магазина, в котором закупка и соответственно прайс в базе в разных валютах, а цена отображаемая в разных? Или просто одна цена - один курс, но корректно работающий с вариативными товарами и распродажами?

Как мне кажется, наиболее простой и в то же время ДОСТАТОЧНО универсальный вариант такой:
Корректная работа с распродажами и вариативным товаром
Названия валют не трогаются, то есть зависят от стандартных настроек WC. Пользователь просто сам знает, что в карточке товара цена вводится не в рублях (как там написано), а в долларе.
На странице общих настроек - секция для настройки плагина. Там радиобаттон с 2 вариантами: ввод курса вручную или подтягивание с сайта.
Под вводом вручную - собственно поле для ввода нужного курса (коэффициента)
Там где подтягивание автоматически - 1) либо вообще ничего (если у нас рубли), 2) либо выбор из наиболее популярных направлений конвертации (доллар-рубль, евро-рубль, доллар-гривна, евро-гривна, доллар-белрубль, евро-белрубль), 3) либо вообще тупо поле для ввода ссылки на необходимый xml-файл (или другого кода) для нужной конвертации (вдруг кто еще в какой-то валюте закупается).

Локализация ИМХО не нужна - это лишнее, а этим плагином вряд ли будет пользоваться кто-то нерусскоязычный. Ну, по крайней мере для начала.

По деньгам - пока скидываться не готов. Потом может уже готовый плагин приобрел бы, если будет ситуация понятная. У нас сейчас вообще мультивалютная зона наметилась с хз какими курсами и хз какими коэффициентами. :confused:
 

Solomon Fox

Форумчанин
Вау. Отличный плагин. Спасибо обязательно поставлю и раскопаю, что он может. Но автоматический конвертер цен подошел идеально. В тех. поддержке даже допилить его готовы (за доплату). )) Но за решение спасибо. сохраню себе в коллекцию
 
Последнее редактирование:

ВладБлад

Опытный
Вау. Отличный плагин. Спасибо обязательно поставлю и раскопаю, что он может. Но автоматический конвертер цен подошел идеально. В тех. поддержке даже допилить его готовы (за доплату). )) Но ха решение спасибо. сохраню себе в коллекцию
Вы про какой именно свой плагин "автоматический конвертер цен" пишите?
 

Limych

Новичок
ууупс
попробовал на практике, причем самый первый, базовый вариант. Работает странно.
На простых товарах - вместо зачеркнутой цены без скидки и цены со скидкой, выводится только новая цена (расчтывается (индексируется) вроде правильно).
На вариативных товарах выводятся сначала зачеркнутая старая цена без учета индексирования на курс, потом новая цена с учетом индексирования, вот так:
177 грн.–197 грн.1,682 грн.–1,872 грн.
(подчеркивание означает зачеркивание).

Вот код, который я добавлял в functions.php
PHP:
/** Меняем цену товара в соответствии с курсом **/
function my_woocommerce_get_price($price, $_product) {
    $kurs = 10; // курс валюты
    $new_price = $price * $kurs;
    return $new_price; // новая цена
}
add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);
Спасибо огромное, ну очень помогло, все сделано в идеале. Короче я просто от твоего ответа кайфую
 

Mantizo

Новичок
Всем доброго дня!

Нужен совет: как применить отображение стоимости товара с курсом во всех категориях, кроме одной, в коде она обозначена "custom-cat". Функция с данным кодом работает, но цена выводится только на странице товара, в категориях и плагинах где выводятся цены - выводит 0руб. Если кто-то пропишет, буду очень признателен.

PHP:
function my_woocommerce_get_price($price, $_product) {
if ( is_product() && has_term( 'custom-cat', 'product_cat' ) ){
    return $price;
    }
elseif ( is_product() && has_term( '', 'product_cat' ) ){
    $kurs = 65; // курс валюты
    $new_price = $price * $kurs;
    return $new_price; // новая цена
}

add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);
 
Последнее редактирование:

yurkkkaa

Новичок
PHP:
function my_woocommerce_get_price($price, $_product) {
    $kurs = 58; // курс валюты
    $new_price = $price * $kurs;
    return $new_price; // новая цена
}
add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);

Подскажите как данный код прикрутить к плагину WOOF - WooCommerce Products Filter , в плагине есть фильтр по цене , но он не выводит $new_price; // новая цена. Спасибо.
 

searchingman

Гуру
Местный
PHP:
function my_woocommerce_get_price($price, $_product) {
    $kurs = 58; // курс валюты
    $new_price = $price * $kurs;
    return $new_price; // новая цена
}
add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);

Подскажите как данный код прикрутить к плагину WOOF - WooCommerce Products Filter , в плагине есть фильтр по цене , но он не выводит $new_price; // новая цена. Спасибо.
К автору плагина не пробовали обращаться? Он русскоязычный, т.е. даже языкового барьера не будет.
 
Последнее редактирование:

panteradiab

Новичок
Всё прекрасно кроме одного. Цена нормально выводиться в карточке товара, однако на странице магазина если товар вариативный она выводится без учёта пересчёта курса. Т.е. по факту меняется цена исключительно в окне товара. Плагины работы с ценой тоже видят старую цену. Сейчас ломаю голову как прикрутить его так чтобы и на странице магазина нормально отображалось. Может кто нашёл решение уже?
 

inboundesign

Новичок
Самый просто плагин для конвертации https://ru.wordpress.org/plugins/exchange-rates-today/
Там только 1 поле с курсом, который вы пишите в ручную

Кто-то настраивал конвертацию по курсу Приват24 через api или еще как-нибудь? Поделитесь опытом или идеями
 

amprofil02

Новичок
Всем доброго дня!

Нужен совет: как применить отображение стоимости товара с курсом во всех категориях, кроме одной, в коде она обозначена "custom-cat". Функция с данным кодом работает, но цена выводится только на странице товара, в категориях и плагинах где выводятся цены - выводит 0руб. Если кто-то пропишет, буду очень признателен.

PHP:
function my_woocommerce_get_price($price, $_product) {
if ( is_product() && has_term( 'custom-cat', 'product_cat' ) ){
    return $price;
    }
elseif ( is_product() && has_term( '', 'product_cat' ) ){
    $kurs = 65; // курс валюты
    $new_price = $price * $kurs;
    return $new_price; // новая цена
}

add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);
Скажите пож-ста Вы решили свою проблему? у Вас получилось применить конвертацию валют к конкретным категориям?
 

N1k0lay

Новичок
Пользуюсь плагином exchange-rates-today. Подскажите, Как исключить одну категорию, чтобы на ней не изменялись цены?
 

worteepz

Новичок
Всем доброго дня!

Взял решение в самом начале топика и немного переделал, в этом случае практически все тоже самое, что предлагали ранее: в админке есть поле для ввода курса в ручном режиме и корректный вывод цены в различных типах товара (простой, вариативный), включая товары со скидкой. Если цена у товара не стоит, вместо полученного 0 выводим пустоту:

PHP:
//Получаем значения, которые вводит пользователь в отдельной функции
function prime_value_kurs() {
    $kurs = get_option( 'woocommerce_set_kurs', 1 );
    return $kurs;
}

// Типы товара simple, grouped and external
add_filter('woocommerce_product_get_price', 'prime_change_rprice', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'prime_change_rprice', 99, 2 );

// Тип товара Variations
add_filter('woocommerce_product_variation_get_regular_price', 'prime_change_rprice', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'prime_change_rprice', 99, 2 );

//Производим пересчет значения
function prime_change_rprice($price,$product) {
    $price = (int)$price * prime_value_kurs();
    if ($price == 0) {
        echo $price='';
        return $price;
    }
    else {
        return $price;
    }
}

/** Добавляем в админку поле для настройки курса **/
add_filter( 'woocommerce_general_settings', 'add_a_setting_kurs' );

function add_a_setting_kurs( $settings ) {

$updated_settings = array();

  foreach ( $settings as $section ) {

    if ( isset( $section['id'] ) && 'pricing_options' == $section['id'] &&
       isset( $section['type'] ) && 'sectionend' == $section['type'] ) {

      $updated_settings[] = array(

        'title'        => 'Курс валюты',
        'desc'         => 'Курс валюты учета по отношению к валюте, которая отображается посетителю',
        'id'           => 'woocommerce_set_kurs',
        'type'         => 'text',
        'css'          => 'width:70px;',
        'default'      => '1',
        'desc_tip'     => false,
      );
    }
    $updated_settings[] = $section;
  }

  return $updated_settings;
}

Пример работы (админка):

http://joxi.ru/vAWOLYEt141nDA

На фронте:

http://joxi.ru/ZrJkdqxT979Opm

@panteradiab,
 
Сверху Снизу