Как сделать две цены на woocommerce?

Ссылка скопирована
1 ответ

У товаров есть вариации (блок комплектация станка), поэтому я полагаю что
выбор цены не может быть реализован через вариации.
Как сделать выбор цены нажатием на табы?

Как сделать две цены на woocommerce?

Дополнительно:

Ответы:

У товаров есть вариации (блок комплектация станка), поэтому я полагаю что
выбор цены не может быть реализован через вариации.

Как раз то что на скрине и делается вариативным товаром.

Но можно использовать и доп. поля к товару. Есть и готовые плагины для подобных решений.

Но в данном случае я бы делал вариативным.

  • там просто цены не зависят от вариаций
  • Илья Вишняк, это странно, но ничего не мешает указать одинаковые цены.

    Но если это просто доп. информация одного товара (одного артикула), не влияющая ни на цены, ни на учёт склада/логистику, ни на что-то ещё, тогда да, лучше делать доп. полями.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Две цены в WooCommerce можно сделать разными способами, но выбор зависит от смысла этих цен. Если это разные комплектации, тарифы, типы оплаты или “с НДС/без НДС”, архитектура будет разной.

Если у товара уже есть вариации “комплектация станка”, не стоит добавлять ещё один уровень вариаций только ради цены, если это делает карточку неудобной. Можно сделать табы как UI, а цену менять через JS и кастомные поля.

Нормальная схема:

  • добавить два meta-поля цены, например _price_base и _price_full;
  • на фронте вывести табы;
  • при выборе таба менять отображаемую цену;
  • при добавлении в корзину передавать выбранный тип цены;
  • в корзине пересчитать цену через hook.

Пример пересчёта в корзине:

add_action('woocommerce_before_calculate_totals', function ($cart) {
    if (is_admin() && !defined('DOING_AJAX')) {
        return;
    }
 
    foreach ($cart->get_cart() as $cart_item) {
        if (($cart_item['price_type'] ?? '') === 'full') {
            $price = get_post_meta($cart_item['product_id'], '_price_full', true);
            if ($price !== '') {
                $cart_item['data']->set_price((float) $price);
            }
        }
    }
});

add_action('woocommerce_before_calculate_totals', function ($cart) { if (is_admin() && !defined('DOING_AJAX')) { return; } foreach ($cart->get_cart() as $cart_item) { if (($cart_item['price_type'] ?? '') === 'full') { $price = get_post_meta($cart_item['product_id'], '_price_full', true); if ($price !== '') { $cart_item['data']->set_price((float) $price); } } } });

Но нужно ещё добавить выбранный тип цены в cart item data через woocommerce_add_cart_item_data.

Если цены должны участвовать в складском учёте, остатках и разных SKU, лучше использовать вариации. Если это просто “цена покупки” и “цена аренды” или “стандарт/под ключ”, кастомная логика с meta-полями может быть удобнее.

Итог: табы можно сделать, но они должны не только менять текст цены, а передавать выбранный тип в корзину и заказ. Иначе пользователь увидит одну цену, а оформится другая.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно