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

Решено Перестал работать add_filter('woocommerce_get_price'...

pashin

Новичок
Умножал цену товара на курс ЦБ при помощи
add_filter('woocommerce_get_price', 'my_woocommerce_get_price',100,2);
function my_woocommerce_get_price($price) {
$price = round($price * $kurs, -1);
return $price; }
Сегодня заметил, что данное решение перестало работать и цена выводится без умножения на курс ЦБ как на странице товара, так и в корзине.
Подскажите, как исправить?

Тема Storefront и все остальное обновлено до последних версий. Товар вариативный.

PS фильтр add_filter('woocommerce_variable_price_html' работает корректно и диапазон цен вариативных товаров выводится умноженный на курс ЦБ
 
Последнее редактирование:

pashin

Новичок
Пример здесь: http://magmagrill.ru/product/klapan-regulyator-dlya-gazovyh-grilej-magma-low-output/
Цена диапазона от и до для вариативного товара выводится, как надо (цена в USD умноженная на курс доллара).
А вот цена выбранной вариации стала выводиться без модификации, в USD (в данном случае 115)
Подозреваю, что дело в обновлении woocommerce.
 

ADv

Гуру
Местный
Откатился, все заработало.
Получается, что проблема возникает при версии woocomerce 3.0 и выше.
Вот такой код должен сработать в новой версии 3.х
Код:
add_filter('woocommerce_product_get_price', 'my_woocommerce_get_price',100,2);
    function my_woocommerce_get_price($price) {
        $price = round($price * $kurs, -1);
        return $price;
}
 

alexne3a

Новичок
У меня похожая проблема при вариативном товаре. Не отрабатывается вариация при фильтрации.
YITH WooCommerce Ajax Product Filter Premium
 

pashin

Новичок
Приведите весь код полностью, который отвечает за пересчет курсов.
Как выяснилось путем долгих мучений, фильтр add_filter('woocommerce_product_get_price', 'my_woocommerce_get_price',100,2); срабатывает корректно (в переменной $product->price находится цена помноженная на курс, как и требуется), НО ПОЛУЧАЕТСЯ, что за вывод цены конкретной вариации и за получение цены конкретной вариации при добавлении в корзину в woocommerce 3 отвечает другая функция.
Вопрос: какая и как к ней применить фильтр?
 

pashin

Новичок
Ларчик открывался просто, нужно было использовать add_filter('woocommerce_product_variation_get_price', 'my_woocommerce_get_price',100,2);
 
Сверху Снизу