Поддержка WooCommerce Цена price и regular_price — в чем отличие?

  • Добрый день!

    У товара есть 3 типа цен: price, regular_price, sale_price

    Вопрос в следующем, в чем отличие price от regular_price? Чем связаны эти типы? Или где можно почитать про формирование этих типов цен для разных типов товаров (простых и вариативных).

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Модератор 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

    У меня вопрос к вам.
    У меня есть варитивный товар, я не хочу чтобы показывалась цена от и до, мне нужно базовая цена какая-нибудь или чтобы только ДО было, как мне реализовать? Что мне надо переделать в шаблоне?

    У меня вопрос к вам.

    п.2

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Цена price и regular_price — в чем отличие?» закрыта для новых ответов.