Как предлагать скидки в зависимости от количества в WooCommerce
Опубликовано: 2020-01-27Как правило, как владелец магазина, вы можете иногда предлагать скидки, если клиенты покупают более одного количества определенного продукта. Это может быть либо увеличение продаж, либо ликвидация избыточных запасов. В этом посте вы узнаете, как предлагать скидки в зависимости от количества в WooCommerce, используя как фрагменты кода, так и плагины.
Как предлагать скидки в зависимости от количества в WooCommerce с помощью фрагментов кода
Давайте рассмотрим, как использовать для этого фрагмент кода. С помощью этого фрагмента кода мы предлагаем покупателям скидку в размере 5 % при покупке более двух партий одного и того же продукта.
Для этого вам нужно будет добавить приведенный ниже код в файл functions.php вашей дочерней темы:
add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 ); функция ts_add_default_price_as_custom($cart_item_data, $product_id, $variation_id){ $product_id = $variation_id > 0? $вариант_ид : $продукт_ид; ## ----- УСТАВЬТЕ СКИДКУ ЗДЕСЬ ----- ## $ скидка_процент = 5; // Скидка (5%) // Объект WC_Product $ продукт = wc_get_product ($ product_id); $price = (float) $product->get_price(); // Установите базовую цену продукта по умолчанию в качестве данных пользовательской корзины $cart_item_data['base_price'] = $цена; // Установите цену продукта со скидкой в качестве данных пользовательской корзины $cart_item_data['new_price'] = $цена * (100 - $discount_percentage) / 100; // Установите процент как пользовательские данные о товаре в корзине $cart_item_data['процент'] = $discount_percentage; вернуть $cart_item_data; } // Отображаем исходную цену товара add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 ); функция ts_display_cart_items_default_price($product_price, $cart_item, $cart_item_key){ если( isset($cart_item['base_price'])) { $product = $cart_item['данные']; $product_price = wc_price(wc_get_price_to_display($product, array('price' => $cart_item['base_price'] )) ); } возврат $product_price; } // Отображаем название товара с процентом скидки add_filter('woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 ); функция ts_add_percentage_to_item_name($product_name, $cart_item, $cart_item_key){ if( isset($cart_item['percentage']) && isset($cart_item['base_price'])) ) { если($cart_item['data']->get_price() != $cart_item['base_price'] ) $product_name .= ' <em>(' . $cart_item['percentage'] . '% со скидкой)</em>'; } вернуть $product_name; } add_action('woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1); функция ts_custom_discounted_cart_item_price($cart) { если (is_admin() && ! определено('DOING_AJAX')) возвращаться; если ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) возвращаться; ## ----- ЗДЕСЬ УСТАНОВИТЕ КОЛИЧЕСТВО ----- ## $целевое_кол-во = 2; // Целевое количество // Перебираем товары в корзине foreach ($cart->get_cart() как $cart_item) { // Для количества товара 2 и более if( $cart_item['количество'] >= $targeted_qty && isset($cart_item['new_price']) ){ // Установить цену со скидкой на товар в корзине $cart_item['data']->set_price($cart_item['new_price']); } } }
Вышеприведенный код добавит скидку 5%, если количество товара превышает 2. Вы можете изменить это в соответствии со своими требованиями, изменив переменную $discount_percentage , чтобы установить желаемую скидку, и $targeted_qty , чтобы установить количество, выше которого вы хотите применить скидку.
Теперь вы сможете увидеть цену со скидкой, если добавите в корзину 2 или более количества одного и того же товара.
В приведенном выше коде мы использовали четыре основных хука:
woocommerce_add_cart_item_data : этот хук-фильтр используется для изменения содержимого/метаданных корзины.
woocommerce_cart_item_price : этот хук-фильтр используется для изменения способа отображения цен в корзине.
woocommerce_cart_item_name : этот хук-фильтр можно использовать для изменения названия товара в корзине. В нашем примере мы используем его, чтобы добавить процент скидки к названию продукта.
woocommerce_before_calculate_totals: этот хук действия используется для переопределения цены товара в корзине.
Как предлагать скидки в зависимости от количества только для товаров, которых нет в продаже:
Если вы хотите ограничить это только теми продуктами, которых нет в продаже, вам просто нужно отредактировать фрагмент кода выше, чтобы добавить условие внутри функции, которая добавляется к хуку woocommerce_add_cart_item_data:

add_filter('woocommerce_add_cart_item_data', 'ts_add_default_price_as_custom', 20, 3 ); функция ts_add_default_price_as_custom($cart_item_data, $product_id, $variation_id){ $product_id = $variation_id > 0? $вариант_ид : $продукт_ид; ## ----- УСТАВЬТЕ СКИДКУ ЗДЕСЬ ----- ## $ скидка_процент = 5; // Скидка (5%) // Объект WC_Product $ продукт = wc_get_product ($ product_id); // ДОБАВЬТЕ ЗДЕСЬ УСЛОВИЕ, чтобы предложить СКИДКУ ТОЛЬКО на товары, не продаваемые в продаже если( ! $product->is_on_sale() ){ $price = (float) $product->get_price(); // Установите базовую цену продукта по умолчанию в качестве данных пользовательской корзины $cart_item_data['base_price'] = $цена; // Установите цену продукта со скидкой в качестве данных пользовательской корзины $cart_item_data['new_price'] = $цена * (100 - $discount_percentage) / 100; // Установите процент как пользовательские данные о товаре в корзине $cart_item_data['процент'] = $discount_percentage; } вернуть $cart_item_data; } // Отображаем исходную цену товара add_filter('woocommerce_cart_item_price', 'ts_display_cart_items_default_price', 20, 3 ); функция ts_display_cart_items_default_price($product_price, $cart_item, $cart_item_key){ если( isset($cart_item['base_price'])) { $product = $cart_item['данные']; $product_price = wc_price(wc_get_price_to_display($product, array('price' => $cart_item['base_price'] )) ); } возврат $product_price; } // Отображаем название товара с процентом скидки add_filter('woocommerce_cart_item_name', 'ts_add_percentage_to_item_name', 20, 3 ); функция ts_add_percentage_to_item_name($product_name, $cart_item, $cart_item_key){ if( isset($cart_item['percentage']) && isset($cart_item['base_price'])) ) { если($cart_item['data']->get_price() != $cart_item['base_price'] ) $product_name .= ' <em>(' . $cart_item['percentage'] . '% со скидкой)</em>'; } вернуть $product_name; } add_action('woocommerce_before_calculate_totals', 'ts_custom_discounted_cart_item_price', 20, 1); функция ts_custom_discounted_cart_item_price($cart) { если (is_admin() && ! определено('DOING_AJAX')) возвращаться; если ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) возвращаться; ## ----- ЗДЕСЬ УСТАНОВИТЕ КОЛИЧЕСТВО ----- ## $целевое_кол-во = 2; // Целевое количество // Перебираем товары в корзине foreach ($cart->get_cart() как $cart_item) { // Для количества товара 2 и более if( $cart_item['количество'] >= $targeted_qty && isset($cart_item['new_price']) ){ // Установить цену со скидкой на товар в корзине $cart_item['data']->set_price($cart_item['new_price']); } } }
Таким образом, вы можете предлагать скидки в зависимости от количества, используя фрагменты кода для продуктов без продажи, распродажи или всех продуктов, то есть для всего магазина, указав соответствующее условие внутри функции, которая добавляется к крючку фильтра woocommerce_add_cart_item_data .
Как предлагать скидки в зависимости от количества в WooCommerce с помощью плагинов
Если вам неудобно добавлять фрагмент кода в файлы вашего веб-сайта, вы также можете использовать плагины для этого:
- Правила скидок для WooCommerce : это бесплатный плагин, который позволяет добавлять процентные скидки не только в зависимости от количества продуктов, но и в случае превышения вашими клиентами определенного ценового предела. Вы также можете добавить процентные скидки на определенное количество товаров (не обязательно одного и того же товара). PRO-версия этого плагина позволяет добавлять скидки для всей категории, предложения BOGO (купи один, получи один бесплатно), скидку с фиксированной ценой вместо скидки в процентах и многое другое.
- Условные скидки для WooCommerce: это еще один плагин, который предлагает почти все важные функции в своей бесплатной версии. Вы можете добавлять скидки в зависимости от количества, количества товаров в корзине, для определенных категорий, для определенных продуктов, для переменных функций (синяя рубашка, размер Medium д.), для определенных ролей в магазине или даже для конкретных клиентов. Его версия PRO имеет несколько дополнительных функций, одна из которых — бесплатное добавление продукта в корзину при покупке определенного продукта.
- Смарт-купоны: помимо подарочных карт, кредитов магазина, купонов URL и дополнительных ограничений, вы также можете ограничить купон на основе количества конкретных товаров в корзине (например, 10 рубашек), а также общего количества нескольких товаров в корзине. тележка (пример — 5 рубашек + 2 штана + 3 ремня).
Таким образом, вы можете использовать фрагменты кода или плагины, чтобы предлагать скидки своим клиентам в зависимости от количества продуктов.