Модератор
Yuri
(@yube)
У товара есть 3 типа цен
У товара как такового может быть две цены: базовая (regular_price) и распродажная (sale_price). Они задаются при создании/редактировании товара. Третья цена (price) формируется для покупателя исходя из первых двух и даты распродажи (может быть более сложный алгоритм в случае использования плагинов)
Задание цен для простых и вариативных товаров практически ничем не отличается.
т.е в простом товаре, если есть распродажа, то price = sale_price, если нет: price = regular_price, при этом если формировать товар программно, то, помимо regular_price значение активной цены price также должно быть задано обязательно и в случае без распродажи быть равно regular_price?
В вариативном товаре я вижу в произвольном множественном поле _price цены всех вариаций, но у самого вариативного товара отсутствует значение _regular_price, которые я так понимаю подтягивается уже из вариаций. В этом случае формирование цен вариаций и их обязательное наличие, т.е. price и regular_price аналогично простому товару?
Модератор
Yuri
(@yube)
т.е в простом товаре, если есть распродажа, то price = sale_price, если нет: price = regular_price,
Именно.
если формировать товар программно
То лучше использовать функции WC (типа $product->set_price), потому что после очередного обновления WC можно не найти концов. Впрочем, функции тоже можно не найти.
у самого вариативного товара отсутствует значение _regular_price, которые я так понимаю подтягивается уже из вариаций.
У вариативного нет цены (он бесценен:)), на вывод подтягивается диапазон цен вариаций (одно число — вырожденный случай для равноценных вариаций).
т.е. price и regular_price аналогично простому товару?
Видимо, да. Логично, по крайней мере.
Я не занимался внесением товаров мимо админки. А мимо WC не занимался и точно не буду — уж очень у него замороченная и изменчивая структура данных. С меня и выборок для отчетов хватило.
Спасибо за подробные разъяснения 🙂
Cобственно остался только один вопрос.
Вбиваем цену обычную цену через админку. Происходит «волшебство» и при не заданной sale_price и ее даты, автоматом генерируется price на основании regular_price.
А как это должно выглядеть на простом товаре в программном виде?
Так:
$product->set_regular_price(‘100’);
$product->save();
И price сформируется автоматически или нужно вызвать некую функцию синхронизации regular_price в price?
Или так:
$product->set_price(‘100’);
$product->set_regular_price(‘100’);
$product->save();
Да и еще вопрос, в этих случаях мета поля _price и _regular_price сформируют методы объекта автоматически или нужно будет дополнительно вызывать update_post_meta для этих полей?
Модератор
Yuri
(@yube)
Мне кажется, проверить опытным путем будет проще и быстрее, чем ждать, что ответит кто-то, кто знает ответ наверняка.
Юрий, спасибо!
Опыт провел, может кому пригодится.
Код вида:
$product->set_regular_price(100);
$product->save();
Помимо задания обычной цены:
1. Автоматически синхронизирует regular_price и price продукта.
2. Также автоматически будут обновлены соответствующие мета поля.
@yube
У меня вопрос к вам.
У меня есть варитивный товар, я не хочу чтобы показывалась цена от и до, мне нужно базовая цена какая-нибудь или чтобы только ДО было, как мне реализовать? Что мне надо переделать в шаблоне?