Как поставить наценку на товар woocommerce?

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

Подскажите плагин для установки процента наценки товара для клиентов. Нахожу только решения по скидке или установки наценки только на вторую валют, а необходимо на основную валюту также установить процент наценки

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

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

  • Refguser, спасибо, действительно он. А я + писал
  • Ответы:

    Вы можете воспользоваться плагином WooCommerce Extra Product Options. Этот плагин позволяет добавлять дополнительные опции к товарам, включая опцию для установки процента наценки.

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

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

    Заказать помощь
    Лучший ответ
    1
    Алексей Денисов Ответ

    Наценка в WooCommerce — это действительно “скидка наоборот”, но лучше не пытаться переделывать скидочные плагины, если нужна понятная и контролируемая логика. Есть два нормальных пути: готовый плагин для role pricing/markup или небольшой код через фильтры цены.

    Если наценка должна применяться ко всем товарам, пример простой:

    add_filter('woocommerce_product_get_price', 'add_global_markup_to_price', 20, 2);
    add_filter('woocommerce_product_variation_get_price', 'add_global_markup_to_price', 20, 2);
     
    function add_global_markup_to_price($price, $product) {
        if ($price === '') {
            return $price;
        }
     
        $markup_percent = 10;
        return (float) $price * (1 + $markup_percent / 100);
    }

    add_filter('woocommerce_product_get_price', 'add_global_markup_to_price', 20, 2); add_filter('woocommerce_product_variation_get_price', 'add_global_markup_to_price', 20, 2); function add_global_markup_to_price($price, $product) { if ($price === '') { return $price; } $markup_percent = 10; return (float) $price * (1 + $markup_percent / 100); }

    Но для каталога WooCommerce ещё есть regular price, sale price и cached variation prices. Поэтому для вариативных товаров может понадобиться очистить transients и добавить фильтры для вариаций:

    add_filter('woocommerce_variation_prices_price', 'add_global_markup_to_price', 20, 2);
    add_filter('woocommerce_variation_prices_regular_price', 'add_global_markup_to_price', 20, 2);

    add_filter('woocommerce_variation_prices_price', 'add_global_markup_to_price', 20, 2); add_filter('woocommerce_variation_prices_regular_price', 'add_global_markup_to_price', 20, 2);

    Если наценка нужна только для отдельных клиентов или ролей, добавьте условие:

    if (!is_user_logged_in()) {
        return $price;
    }
     
    $user = wp_get_current_user();
    if (!in_array('wholesale_customer', (array) $user->roles, true)) {
        return $price;
    }

    if (!is_user_logged_in()) { return $price; } $user = wp_get_current_user(); if (!in_array('wholesale_customer', (array) $user->roles, true)) { return $price; }

    Если наценка должна быть видна в админке как отдельное поле, лучше сделать meta-поле товара и считать цену от него. Для сложных правил удобнее взять плагин динамического ценообразования, например role based pricing/dynamic pricing, где можно задавать проценты по ролям, категориям и группам товаров.

    Важно: наценка через фильтр меняет цену на фронте и в корзине, но нужно проверить налоги, купоны, выгрузки, фиды и оплату. Для магазина это критично.

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

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

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

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

    комментарий

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

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