Задать вопрос
@FRC_Volen

Как обновить цену для вариативного товара Woocommerce?

Привет,

не могу обновить цены для вариативного товара из своего метабокса
я использую следующий код чтобы обновить цены для товара и его вариаций
update_post_meta( $post->ID, '_regular_price', (float)$meta_value  );
update_post_meta( $post->ID, '_price', (float)$meta_value  );


Но в магазине и в карточке товара показана старая цена
5ca76cfd9b55b478861919.jpeg
а в корзине уже новая цена
5ca76d11e673e845514709.jpeg
  • Вопрос задан
  • 684 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    1C-разработчик
    8 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Решения вопроса 1
Woocomerce активно использует трансиенты. Это временный вордпрессовский кэш.
Что бы Ваши изменения сразу вступали в силу, Вам надо удалять трансиент для этого товара
// очищаем кэш
	wc_delete_product_transients($product_id);


Я тоже как то искал и нашел в исходниках, где-то очень глубоко.

Но если честно, Ваш подход неверный, т.к. Woocommerce при изменении цены вариации правит еще мета поля самого товара. А Вы работаете в обход woo, напрямую с базой. К сожалению правильным кодом не поделюсь, у самого руки не дошли переписать, поищите в нете. Думаю надо работать с классом WC_Product и его производными.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы